---
title: 'Changelog: Cypress App'
description: 'Release notes for the Cypress App.'
sidebar_label: Changelog
---

<ProductHeading product="app" />

# Changelog

## 15.7.1

_Released 12/02/2025_

**Performance:**

- Improved performance when viewing command snapshots in the Command Log. Element highlighting is now significantly faster, especially when highlighting multiple elements or complex pages. This is achieved by reducing redundant style calculations and batching DOM operations to minimize browser reflows. Addressed in [#32951](https://github.com/cypress-io/cypress/pull/32951).

**Bugfixes:**

- Updated the error message shown when the [`cy.prompt()`](/api/commands/prompt) bundle is deleted while in use. Ensured that the Cloud bundles are written atomically to avoid concurrent downloads causing issues. Addressed in [#33034](https://github.com/cypress-io/cypress/pull/33034).

**Dependency Updates:**

- Upgraded `yargs-unparser` from `1.6.0` to `1.6.4` (which upgraded `flat` from `4.1.1` to `5.0.2`) to resolve [CVE-2020-36632](https://github.com/advisories/GHSA-52f5-9888-hmc6). Addressed [#27763](https://github.com/cypress-io/cypress/issues/27763).

## 15.7.0

_Released 11/19/2025_

**Performance:**

- Limits the number of matched elements that are tested for visibility when added to a command log entry. Fixes a crash scenario related to rapid successive DOM additions in conjunction with a large number of elements returned from a query. Addressed in [#32937](https://github.com/cypress-io/cypress/pull/32937).

**Features:**

- `Next.js` version 16 is now supported within component testing. Currently, `webpack` is used to bundle Next.js components. Turbopack, the [new default](https://nextjs.org/docs/app/guides/upgrading/version-16#turbopack-by-default) inside Next.js 16, is not yet supported within Cypress. Addresses [#32857](https://github.com/cypress-io/cypress/issues/32857).

**Bugfixes:**

- Fixed an issue where [`cy.wrap()`](/api/commands/wrap) would cause infinite recursion and freeze the Cypress App when called with objects containing circular references. Fixes [#24715](https://github.com/cypress-io/cypress/issues/24715). Addressed in [#32917](https://github.com/cypress-io/cypress/pull/32917).
- Fixed an issue where top changes on test retries could cause attempt numbers to show up more than one time in the reporter and cause attempts to be lost in Test Replay. Addressed in [#32888](https://github.com/cypress-io/cypress/pull/32888).
- Fixed an issue where stack traces that are used to determine a test's invocation details are sometimes incorrect. Addressed in [#32699](https://github.com/cypress-io/cypress/pull/32699).
- Fixed an issue where larger than expected config values were causing issues in certain cases when recording to the Cypress Cloud. Addressed in [#32957](https://github.com/cypress-io/cypress/pull/32957).

**Misc:**

- The keyboard shortcuts modal now displays the keyboard shortcut for saving Studio changes - `⌘` + `s` for Mac or `Ctrl` + `s` for Windows/Linux. Addressed [#32862](https://github.com/cypress-io/cypress/issues/32862). Addressed in [#32864](https://github.com/cypress-io/cypress/pull/32864).
- The Cursor logo now correctly displays in the External editor dropdown. Addresses [#32062](https://github.com/cypress-io/cypress/issues/32062). Addressed in [#32911](https://github.com/cypress-io/cypress/pull/32911).

## 15.6.0

_Released 11/04/2025_

**Features:**

- Added a 'Self-healed' badge to the Command Log when [`cy.prompt()`](/api/commands/prompt) steps automatically recover after the element they need is not found in the cache. Addressed in [#32802](https://github.com/cypress-io/cypress/pull/32802).
- [`cy.prompt()`](/api/commands/prompt) will now show a warning in the `Get code` modal when there are unsaved changes in `Studio` that will be lost if the user saves the generated code. Addressed in [#32741](https://github.com/cypress-io/cypress/pull/32741).

**Bugfixes:**

- Fixed an issue where command snapshots were not correctly displayed in Studio. Addressed in [#32808](https://github.com/cypress-io/cypress/pull/32808).
- Chrome's autofill popup is now disabled when filling address and credit card forms during test execution. We also added some other Chrome flags and preferences that are common when automating browsers. Fixes [#25608](https://github.com/cypress-io/cypress/issues/25608). Addressed in [#32811](https://github.com/cypress-io/cypress/pull/32811).
- Fixed an issue where grouped command text jumps up and down when expanding and collapsing in the command log. Addressed in [#32757](https://github.com/cypress-io/cypress/pull/32757).
- Fixed an issue with grouped console prop items having a hard to read blue color in the console log and duplicate `:` characters being displayed. Addressed in [#32776](https://github.com/cypress-io/cypress/pull/32776).
- Added more context to the error message shown when [`cy.prompt()`](/api/commands/prompt) fails to download. Addressed in [#32822](https://github.com/cypress-io/cypress/pull/32822).
- Fixed an issue where absolute file paths were not correctly determined from the source map when the source map root was updated. Fixes [#32809](https://github.com/cypress-io/cypress/issues/32809).

**Misc:**

- Add top padding for command log labels. Addressed in [#32774](https://github.com/cypress-io/cypress/pull/32774).
- The hitbox for expanding a grouped command has been widened. Addresses [#32778](https://github.com/cypress-io/cypress/issues/32778). Addressed in [#32783](https://github.com/cypress-io/cypress/pull/32783).
- Have cursor on hover of the AUT URL to show as pointer. Addresses [#32777](https://github.com/cypress-io/cypress/issues/32777). Addressed in [#32782](https://github.com/cypress-io/cypress/pull/32782).
- WebKit now prefers a cookie's fully qualified `domain` when requesting a cookie value via [`cy.getCookie()`](/api/commands/getcookie). If none are found, the cookie's apex domain will be used as a fallback. Addresses [#29954](https://github.com/cypress-io/cypress/issues/29954), [#29973](https://github.com/cypress-io/cypress/issues/29973) and [#30392](https://github.com/cypress-io/cypress/issues/30392). Addressed in [#32852](https://github.com/cypress-io/cypress/pull/32852).
- The 'Next' tooltip style was updated. Addressed in [#32866](https://github.com/cypress-io/cypress/pull/32866).
- Make test name header sticky in studio mode and in the tests list. Addresses [#32591](https://github.com/cypress-io/cypress/issues/32591). Addressed in [#32840](https://github.com/cypress-io/cypress/pull/32840)
- The [`cy.exec()`](/api/commands/exec) type now reflects the correct yielded response type of `exitCode`. Addresses [#32875](https://github.com/cypress-io/cypress/issues/32875). Addressed in [#32885](https://github.com/cypress-io/cypress/pull/32885).

**Dependency Updates:**

- Upgraded `better-sqlite3` from `11.10.0` to `12.4.1`. Addressed in [#32755](https://github.com/cypress-io/cypress/pull/32755).
- Upgraded `recast` from `0.20.4` to `0.23.11`. Addressed in [#32742](https://github.com/cypress-io/cypress/pull/32742).

## 15.5.0

_Released 10/17/2025_

**Features:**

- When `cypress run` is used with both `--record` and `--posix-exit-codes` enabled, Cypress will now exit with code `112` when it cannot determine which spec to run next due to network conditions. Addresses [#32485](https://github.com/cypress-io/cypress/issues/32485). Addressed in [#32635](https://github.com/cypress-io/cypress/pull/32635).

**Bugfixes:**

- An error is no longer thrown during command execution when the application under test overwrites the `window.$` property with a non-function. Fixes [#1502](https://github.com/cypress-io/cypress/issues/1502). Fixed in [#32682](https://github.com/cypress-io/cypress/pull/32682).
- When running `cypress` in Cypress development environments, or when `ELECTRON_ENABLE_LOGGING` is otherwise set to 1, certain messages written to `stderr` will no longer be bracketed with verbose tags. Addresses [#32569](https://github.com/cypress-io/cypress/issues/32569). Addressed in [#32674](https://github.com/cypress-io/cypress/pull/32674).
- Improve performance of time between specs by not resetting the `file_systems` `StorageType` state when executing the CDP command `Storage.clearDataForOrigin`. Fixed in [#32703](https://github.com/cypress-io/cypress/pull/32703).

**Misc:**

- Browser detection in Cypress now always prefers 64-bit browser installs to 32-bit browser installs. Addressed in [#32656](https://github.com/cypress-io/cypress/pull/32656).
- Update code button styles and rename Get Code for Code on [`cy.prompt()`](/api/commands/prompt). Addressed in [#32745](https://github.com/cypress-io/cypress/pull/32745).

**Dependency Updates:**

- Upgraded `tsx` from `4.20.5` to `4.20.6`. Addressed in [#32730](https://github.com/cypress-io/cypress/pull/32730).

## 15.4.0

_Released 10/07/2025_

**Features:**

- Cypress Studio is now available by default. You no longer have to set the `experimentalStudio` flag. Addresses [#30997](https://github.com/cypress-io/cypress/issues/30997). Addressed in [#32571](https://github.com/cypress-io/cypress/pull/32571).
- An option is now available to 'Hide HTTP Requests' in the Cypress Command Log. This can be found in the new dropdown menu at the top of the Command Log. Addresses [#7362](https://github.com/cypress-io/cypress/issues/7362). Addressed in [#32658](https://github.com/cypress-io/cypress/pull/32658).
- Added the `--posix-exit-codes` flag for the `run` command. When this flag is passed, Cypress will exit with 1 if any tests fail, rather than the number of failed tests. Addresses [#32605](https://github.com/cypress-io/cypress/issues/32605) and [#24695](https://github.com/cypress-io/cypress/issues/24695). Addressed in [#32609](https://github.com/cypress-io/cypress/pull/32609).
- [`cy.prompt()`](/api/commands/prompt) is now a reserved Cypress command, currently gated behind a feature flag that requires an invite from Cypress. This means any custom commands named 'prompt' will no longer work. Stay tuned for updates on when this feature will become more widely available. Addresses [#31826](https://github.com/cypress-io/cypress/issues/31826).

**Bugfixes:**

- Fixed a regression introduced in [15.0.0](#15-0-0) where `dbus` connection error messages appear in Docker containers when launching Cypress. Fixes [#32290](https://github.com/cypress-io/cypress/issues/32290).
- Fixed code frames in [`cy.origin()`](/api/commands/origin) so that failed commands will show the correct line/column within the corresponding spec file. Addressed in [#32597](https://github.com/cypress-io/cypress/pull/32597).
- Fixed Cypress Cloud requests so that they properly verify SSL certificates. Addressed in [#32629](https://github.com/cypress-io/cypress/pull/32629).

**Misc:**

- Added a dropdown menu in the Command Log that includes actions like Open in IDE and Add New Test in Studio, along with test preferences such as Auto-Scroll and Hide HTTP Requests. Addresses [#32556](https://github.com/cypress-io/cypress/issues/32556) and [#32558](https://github.com/cypress-io/cypress/issues/32558). Addressed in [#32611](https://github.com/cypress-io/cypress/pull/32611).
- Updated the Studio test editing header to include a Back button. This change ensures the Specs button remains functional for expanding or collapsing the specs panel. Addresses [#32556](https://github.com/cypress-io/cypress/issues/32556) and [#32558](https://github.com/cypress-io/cypress/issues/32558). Addressed in [#32611](https://github.com/cypress-io/cypress/pull/32611).
- Fixed the Studio panel resizing when dragging. Addressed in [#32584](https://github.com/cypress-io/cypress/pull/32584).
- The Next button now maintains consistent visibility during stepping sessions when using `cy.pause`, staying visible but disabled when no immediate next command is available, providing clear visual feedback to users about stepping state. Addresses [#32476](https://github.com/cypress-io/cypress/issues/32476). Addressed in [#32536](https://github.com/cypress-io/cypress/pull/32536).

**Dependency Updates:**

- Upgraded `electron` from `36.8.1` to `37.6.0`. Addressed in [#32607](https://github.com/cypress-io/cypress/pull/32607).
- Upgraded bundled Node.js version from `22.18.0` to `22.19.0`. Addressed in [#32607](https://github.com/cypress-io/cypress/pull/32607).
- Upgraded bundled Chromium version from `136.0.7103.177` to `138.0.7204.251`. Addressed in [#32607](https://github.com/cypress-io/cypress/pull/32607).

## 15.3.0

_Released 09/23/2025_

**Features:**

- Added Escape key support to [`cy.press()`](http://on.cypress.io/api/press). Addresses [#32429](https://github.com/cypress-io/cypress/issues/32429). Addressed in [#32545](https://github.com/cypress-io/cypress/pull/32545).

**Bugfixes:**

- In development mode, Electron `stderr` is piped directly to Cypress' `stderr` to make it clear why Electron failed to start, if it fails to start. Fixes [#32358](https://github.com/cypress-io/cypress/issues/32358). Addressed in [#32468](https://github.com/cypress-io/cypress/pull/32468).
- Fixed an issue where ESM Cypress configurations were not being interpreted correctly. Fixes [#32493](https://github.com/cypress-io/cypress/issues/32493). Fixed in [#32515](https://github.com/cypress-io/cypress/pull/32515).

**Misc:**

- Update the styles for command grouping 'line' so on expansion it is displayed correctly. Addressed in [#32521](https://github.com/cypress-io/cypress/pull/32521).
- Test hook names now correctly display with a semi-bold font weight. Addresses [#32477](https://github.com/cypress-io/cypress/issues/32477). Addressed in [#32491](https://github.com/cypress-io/cypress/pull/32491).
- Updated the Cypress Studio panel to not show bottom border. Addresses [#32478](https://github.com/cypress-io/cypress/issues/32478).

**Dependency Updates:**

- Upgraded `electron` from `36.4.0` to `36.8.1`. Addressed in [#32371](https://github.com/cypress-io/cypress/pull/32371).
- Upgraded bundled Node.js version from `22.15.1` to `22.18.0`. Addressed in [#32371](https://github.com/cypress-io/cypress/pull/32371).
- Upgraded bundled Chromium version from `136.0.7103.149` to `136.0.7103.177`. Addressed in [#32371](https://github.com/cypress-io/cypress/pull/32371).

## 15.2.0

_Released 09/09/2025_

**Features:**

- Added support for using [@cypress/grep](https://www.npmjs.com/package/@cypress/grep) with Cypress Studio. Addresses [#32292](https://github.com/cypress-io/cypress/issues/32292).

**Bugfixes:**

- We now properly partition the `host` with `port` when caching family DNS lookups. This resolves issues where some `localhost` URLs were not resolving in `cy.visit()` in Cypress when they should have. Fixes [#25397](https://github.com/cypress-io/cypress/issues/25397). Addressed in [#32403](https://github.com/cypress-io/cypress/pull/32403).

**Dependency Updates:**

- Updated [`better-sqlite3`](https://www.npmjs.com/package/better-sqlite3) from `11.9.1` to `11.10.0`. Addressed in [#32404](https://github.com/cypress-io/cypress/pull/32404).

## 15.1.0

_Released 09/02/2025_

**Features:**

- Expanded `cy.press()` to support more key types. Addresses [#31051](https://github.com/cypress-io/cypress/issues/31051) and [#31488](https://github.com/cypress-io/cypress/issues/31488). Addressed in [#31496](https://github.com/cypress-io/cypress/pull/31496).

**Bugfixes:**

- Fixed an issue where OS distributions and releases were sometimes not properly populated for Module API results and Cloud recordings. Fixes [#30533](https://github.com/cypress-io/cypress/issues/30533). Addressed in [#32283](https://github.com/cypress-io/cypress/pull/32283).
- Fixed an issue where Cypress would fail to run on GNOME if GTK 4 and GTK 2/3 were detected in the Electron process. Addresses [#32361](https://github.com/cypress-io/cypress/issues/32361).
- Fixed an issue where the open Studio button would incorrectly show for component tests. Addressed in [#32315](https://github.com/cypress-io/cypress/pull/32315).
- Fixed an issue where the TypeScript compiler wasn't being resolved correctly when `@cypress/webpack-batteries-included-preprocessor` was used as a standalone package. Fixes [#32338](https://github.com/cypress-io/cypress/issues/32338).
- Fixed an issue where `tsx` was not being loaded correctly into the Cypress configuration process due to spaces being present in the path. Fixes [#32398](https://github.com/cypress-io/cypress/issues/32398).

**Misc:**

- Updated the Cypress Studio panel to have a darker gray background. Addressed in [#32333](https://github.com/cypress-io/cypress/pull/32333).

**Dependency Updates:**

- Upgraded `esbuild` from `0.15.3` to `0.25.2`. Addressed in [#32231](https://github.com/cypress-io/cypress/pull/32231).
- Upgraded `image-size` from `1.1.1` to `1.2.1`. Addressed in [#32232](https://github.com/cypress-io/cypress/pull/32232).
- Upgraded `tar` from `6.1.5` to `6.2.1`. Addressed in [#32229](https://github.com/cypress-io/cypress/pull/32229).
- Upgraded `axios` from `1.8.3` to `1.11.0`. Addresses [#32347](https://github.com/cypress-io/cypress/issues/32347).

## 15.0.0

_Released 08/20/2025_

**Summary**

This release prepares Cypress Studio for the next era of AI-assisted test creation. You can record interactions, add assertions by right-clicking, and now edit tests inline without leaving Cypress. Turn on `experimentalStudio` in your config to try it out and [share your feedback](https://github.com/cypress-io/cypress/discussions/14339). Read more about the foundation for what's next in our [blog post](https://www.cypress.io/blog/cypress-15-the-foundation-for-whats-next).

<DocsVideo
  src="/img/app/cypress-studio/edit-in-studio-button-on-cypress-test.mp4"
  autoPlay={true}
/>

**Breaking Changes:**

:::info

Refer to the [v15 Migration Guide](/app/references/migration-guide#Migrating-to-Cypress-150) for help migrating your code.

:::

- Removed support for Node.js 18 and Node.js 23. Addresses [#31302](https://github.com/cypress-io/cypress/issues/31302).
- Removed support for Linux distributions with `glibc` older than `2.31`. This support is in-line with Node.js' support for Linux in Node v20+. Addressed in [#31912](https://github.com/cypress-io/cypress/pull/31912).
- Removed support for [Chrome DevTools Protocol](https://chromedevtools.github.io/devtools-protocol) with the [Firefox](https://www.mozilla.org/firefox/) browser. Addresses [#31189](https://github.com/cypress-io/cypress/issues/31189).
- Removed support of the deprecated 3 argument signature of `cy.stub`. Use `cy.stub(object, name).callsFake(fn)` instead. Addresses [#31346](https://github.com/cypress-io/cypress/issues/31346).
- `@cypress/webpack-preprocessor` no longer supports `webpack` version 4. Addresses [#31344](https://github.com/cypress-io/cypress/issues/31344). If you still need to use `webpack` version 4, please see our [migration guide](/app/references/migration-guide#Migrating-to-Cypress-150).
- In order to better align with best practices, `@cypress/webpack-batteries-included-preprocessor` no longer includes certain browser built-ins that were automatically provided by Webpack 4. The removed built-ins are `assert`, `constants`, `crypto`, `domain`, `events`, `http`, `https`, `punycode`, `querystring`, `string_decoder`, `sys`, `timers`, `tty`, `url`, `util`, `vm`, and `zlib`. However, we know that certain built-ins are popular, given that many users have files that are shared between their Cypress tests and node context. Because of this, `@cypress/webpack-batteries-included-preprocessor` will ship with built-in support for `buffer`, `path`, `process`, `os`, and `stream`. If there is a built-in that isn't supported by default and you need to add support, please refer to the Webpack [resolve.fallback](https://webpack.js.org/configuration/resolve/#resolvefallback) documentation and the [`@cypress/webpack-batteries-included-preprocessor` README](https://github.com/cypress-io/cypress/blob/develop/npm/webpack-batteries-included-preprocessor/README.md). Addresses [#31039](https://github.com/cypress-io/cypress/issues/31039).
- The application under test's `pagehide` event in Chromium browsers will no longer trigger Cypress's `window:unload` event. Addressed in [#31853](https://github.com/cypress-io/cypress/pull/31853).
- The `Cypress.SelectorPlayground` API has been renamed to `Cypress.ElementSelector`. This API was renamed to accommodate its use for defining `selectorPriority` in Cypress Studio and our future [`cy.prompt` release](/api/commands/prompt). Additionally, the `getSelector` method and the `onElement` option of `defaults` were removed from this API. Addresses [#31801](https://github.com/cypress-io/cypress/issues/31801). Addressed in [#31889](https://github.com/cypress-io/cypress/pull/31889) and [#32098](https://github.com/cypress-io/cypress/pull/32098).
- The direct download option for installing Cypress is no longer supported. Users should install via a package manager. Addressed in [#32249](https://github.com/cypress-io/cypress/pull/32249).
- Updated `execa` from `1.0.0` to `4.1.0`. This changes the `code` property returned by [`cy.exec()`](/api/commands/exec) to `exitCode`. Addressed in [#32238](https://github.com/cypress-io/cypress/pull/32238).
- **Component Testing breaking changes:**
  - Removed support for Angular 17. The minimum supported version is now `18.0.0`. Addresses [#31303](https://github.com/cypress-io/cypress/issues/31303).
  - `@cypress/angular` now requires a minimum of `zone.js` `0.14.0`. Addresses [#31582](https://github.com/cypress-io/cypress/issues/31582).
  - The Cypress configuration wizard for Component Testing supports TypeScript 5.0 or greater. Addresses [#31187](https://github.com/cypress-io/cypress/issues/31187).
  - `@cypress/vite-dev-server` is now an ESM only package. You will no longer be able to use this package from a CommonJS context. Addresses [#28373](https://github.com/cypress-io/cypress/issues/28373), [#29557](https://github.com/cypress-io/cypress/issues/29557) and [#31882](https://github.com/cypress-io/cypress/issues/31882).
    - Removed support for Vite 4 inside `@cypress/vite-dev-server`. The minimum Vite version is `5`. Addresses [#32038](https://github.com/cypress-io/cypress/issues/32038).
  - `@cypress/webpack-dev-server` no longer supports `webpack-dev-server` version 4. Addresses [#31605](https://github.com/cypress-io/cypress/issues/31605). If you still need to use `webpack-dev-server` version 4, please see our [migration guide](/app/references/migration-guide#Migrating-to-Cypress-150).

**Features:**

- [`cy.url()`](/api/commands/url), [`cy.hash()`](/api/commands/hash), [`cy.go()`](/api/commands/go), [`cy.reload()`](/api/commands/reload), [`cy.title()`](/api/commands/title), and [`cy.location()`](/api/commands/location) now use the automation client (CDP for Chromium browsers and WebDriver BiDi for Firefox) to return the appropriate values from the commands to the user instead of the window object. This is to avoid cross origin issues with [`cy.origin()`](/api/commands/origin) so these commands can be invoked anywhere inside a Cypress test without having to worry about origin access issues. Experimental WebKit still will use the window object to retrieve these values. Also, [`cy.window()`](/api/commands/window) will always return the current window object, regardless of origin restrictions. Not every property from the window object will be accessible depending on the origin context. Addresses [#31196](https://github.com/cypress-io/cypress/issues/31196).
- Selectors accepted in the `selectorPriority` of the `SelectorPlayground` (renamed to `ElementSelector`) API have been expanded to accept `name` and `attributes:*`. Additionally, the default selector priority used by Cypress now includes `name`. Addresses [#31801](https://github.com/cypress-io/cypress/issues/30309) and [#6876](https://github.com/cypress-io/cypress/issues/6876). Addressed in [#31889](https://github.com/cypress-io/cypress/pull/31889).
- [`tsx`](https://tsx.is/) is now used in all cases to run the Cypress config, replacing [ts-node](https://github.com/TypeStrong/ts-node) for TypeScript and Node.js for CommonJS/ESM. This should allow for more interoperability for users who are using any variant of ES Modules. Addresses [#8090](https://github.com/cypress-io/cypress/issues/8090), [#15724](https://github.com/cypress-io/cypress/issues/15724), [#21805](https://github.com/cypress-io/cypress/issues/21805), [#22273](https://github.com/cypress-io/cypress/issues/22273), [#22747](https://github.com/cypress-io/cypress/issues/22747), [#23141](https://github.com/cypress-io/cypress/issues/23141), [#25958](https://github.com/cypress-io/cypress/issues/25958), [#25959](https://github.com/cypress-io/cypress/issues/25959), [#26606](https://github.com/cypress-io/cypress/issues/26606), [#27359](https://github.com/cypress-io/cypress/issues/27359), [#27450](https://github.com/cypress-io/cypress/issues/27450), [#28442](https://github.com/cypress-io/cypress/issues/28442), [#28696](https://github.com/cypress-io/cypress/issues/28696), [#29186](https://github.com/cypress-io/cypress/issues/29186), [#30318](https://github.com/cypress-io/cypress/issues/30318), [#30718](https://github.com/cypress-io/cypress/issues/30718), [#30907](https://github.com/cypress-io/cypress/issues/30907), [#30915](https://github.com/cypress-io/cypress/issues/30915), [#30925](https://github.com/cypress-io/cypress/issues/30925), [#30954](https://github.com/cypress-io/cypress/issues/30954), and [#31185](https://github.com/cypress-io/cypress/issues/31185).
- **Component Testing features:**
  - `@cypress/vite-dev-server` now supports [vite](https://vite.dev/) version 7. Addresses [#31882](https://github.com/cypress-io/cypress/issues/31882).
  - `Angular` version 20 is now supported within component testing. As of now, `cypress/angular` still requires `zone.js` and `@angular-devkit/build-angular`. Addresses [#31304](https://github.com/cypress-io/cypress/issues/31304).

**Bugfixes:**

- Fixed an issue where Create from Component feature might not be able to parse React components from project files. Fixed in [#31457](https://github.com/cypress-io/cypress/pull/31457).
- Fixed an issue where `isSecureContext` would be `false` on localhost when testing with Cypress. Addresses [#18217](https://github.com/cypress-io/cypress/issues/18217).
- Fixed an issue where Angular legacy `Output()` decorators were broken when making component instance field references safe. Fixes [#32137](https://github.com/cypress-io/cypress/issues/32137).
- Fixed an issue where `.fixture()` would not return updated content after the underlying file was modified via `.writeFile()`. The fixture cache is now properly invalidated when the backing file is written to, ensuring updated content is returned in subsequent `.fixture()` calls. Fixes [#4716](https://github.com/cypress-io/cypress/issues/4716).
- Fixed an issue where `.fixture()` calls with a specified encoding would sometimes still attempt to parse the file based on its extension. Files with an explicit encoding are now always treated as raw content. Fixes [#32139](https://github.com/cypress-io/cypress/issues/32139).
- Fixed an issue where `.fixture()` calls with different encoding options would return inconsistent content based on execution order. Fixes [#32138](https://github.com/cypress-io/cypress/issues/32138).
- Filters content written to stderr to prevent Electron from spamming with inconsequential errors/warnings. This stderr content can be viewed by enabling the `cypress:internal-stderr` debug namespace. Fixes [#32070](https://github.com/cypress-io/cypress/issues/32070)
- Fixed an issue where Angular Component Testing was printing extraneous warnings to the console by default. By default, errors only will now print to the console. This can still be overridden by passing in a custom webpack config or setting the `verbose` option inside your `angular.json`. Addresses [#26456](https://github.com/cypress-io/cypress/issues/26456).
- Fixed an issue where `ts-loader` was improperly being detected inside `@cypress/webpack-preprocessor`. Fixes [#32265](https://github.com/cypress-io/cypress/issues/32265).
- Fixed an issue where `.fixture()` calls with `null` and `undefined` encoding options would incorrectly share cache entries, causing unexpected content to be returned. Cache keys now properly distinguish between these encoding values. Fixes [#32274](https://github.com/cypress-io/cypress/issues/32274).

**Misc:**

- The Cypress Command log has a new design when viewing a list of tests. Addresses [#31677](https://github.com/cypress-io/cypress/issues/31677). Addressed in [#31914](https://github.com/cypress-io/cypress/pull/31914).
- Migration helpers and related errors are no longer shown when upgrading from Cypress versions earlier than 10.0.0. To migrate from a pre-10.0.0 version, upgrade one major version at a time to receive the appropriate guidance. Addresses [#31345](https://github.com/cypress-io/cypress/issues/31345). Addressed in [https://github.com/cypress-io/cypress/pull/31629/](https://github.com/cypress-io/cypress/pull/31629/).

**Dependency Updates:**

- Upgraded `electron` from `33.2.1` to `36.4.0`. Addresses [#31257](https://github.com/cypress-io/cypress/issues/31257). Addressed in [#31912](https://github.com/cypress-io/cypress/pull/31912).
- Upgraded bundled Node.js version from `20.18.1` to `22.15.1`. Addresses [#31257](https://github.com/cypress-io/cypress/issues/31257). Addressed in [#31912](https://github.com/cypress-io/cypress/pull/31912).
- Upgraded bundled Chromium version from `130.0.6723.137` to `136.0.7103.149`. Addresses [#31257](https://github.com/cypress-io/cypress/issues/31257). Addressed in [#31912](https://github.com/cypress-io/cypress/pull/31912).
- Upgraded `body-parser` from `1.20.2` to `1.20.3`. This removes the [SNYK-JS-BODYPARSER-7926860](https://security.snyk.io/vuln/SNYK-JS-BODYPARSER-7926860) vulnerability being reported in security scans. Addressed in [#32225](https://github.com/cypress-io/cypress/pull/32225).
- Upgraded `systeminformation` from `5.22.8` to `5.27.7`. Addressed in [#32234](https://github.com/cypress-io/cypress/pull/32234).
- Upgraded `tmp` from `~0.2.3` to `~0.2.4`. This removes the [CVE-2025-54798](https://github.com/advisories/GHSA-52f5-9888-hmc6) vulnerability being reported in security scans. Addresses [#32176](https://github.com/cypress-io/cypress/issues/32176).

## 14.5.4

_Released 08/07/2025_

**Dependency Updates:**

- Upgraded `tar-fs` to `2.1.3` and `3.1.0` in places we can control, to resolve [CVE-2024-12905](https://github.com/advisories/GHSA-pq67-2wwv-3xjx). `@puppeteer/browsers` still references `3.0.4`, but it is only used to download browsers which is not a feature of `puppeteer` that we utilize. Addressed in [#32160](https://github.com/cypress-io/cypress/pull/32160).

## 14.5.3

_Released 07/25/2025_

**Bugfixes:**

- Fixed missing support for setting an absolute path for `component.indexHtmlFile` in `@cypress/webpack-dev-server`. Fixes [#31819](https://github.com/cypress-io/cypress/issues/31819).
- Fixed an issue where TypeScript ESM projects using `.js` and `.mjs` extensions were not resolving correctly within `@cypress/webpack-batteries-included-preprocessor`. Addressed in [#31994](https://github.com/cypress-io/cypress/pull/31994). Fixes [#26827](https://github.com/cypress-io/cypress/issues/26827) and [#28805](https://github.com/cypress-io/cypress/issues/28805).
- Fixed an issue in `@cypress/angular` where component instance fields were not reference safe and were being overwritten. Fixes [#31238](https://github.com/cypress-io/cypress/issues/31238) and [#31983](https://github.com/cypress-io/cypress/issues/31983). Fixed in [#31993](https://github.com/cypress-io/cypress/pull/31993).

**Dependency Updates:**

- Upgraded `@cypress/request` to `3.0.9`, to resolve [CVE-2025-7783](https://github.com/advisories/GHSA-fjxv-7rqg-78g4) in `form-data`. Addresses [#32091](https://github.com/cypress-io/cypress/issues/32091).

## 14.5.2

_Released 07/15/2025_

**Bugfixes:**

- Fixed a regression introduced in [14.5.0](#14-5-0) where the Stop button would not immediately stop the spec timer. Addresses [#31920](https://github.com/cypress-io/cypress/issues/31920).
- Fixed an issue with the `CloudRequest` where it used the wrong port for `https` requests. Addressed in [#31992](https://github.com/cypress-io/cypress/pull/31992).

## 14.5.1

_Released 07/01/2025_

**Bugfixes:**

- Fixed an issue where prerequests with Firefox BiDi were prematurely being removed or matched incorrectly. Addresses [#31482](https://github.com/cypress-io/cypress/issues/31482).

**Dependency Updates:**

- Updated `pbkdf2` from `3.1.2` to `3.1.3`. This removes the [SNYK-JS-PBKDF2-10495498](https://security.snyk.io/vuln/SNYK-JS-PBKDF2-10495498) vulnerability being reported in security scans. Addressed in [#31941](https://github.com/cypress-io/cypress/pull/31941).

## 14.5.0

_Released 06/17/2025_

**Features:**

- Install Cypress `win32-x64` binary on Windows `win32-arm64` systems. Cypress runs in emulation. Addresses [#30252](https://github.com/cypress-io/cypress/issues/30252).

**Bugfixes:**

- Fixed an issue when using `Cypress.stop()` where a run may be aborted prior to receiving the required runner events causing Test Replay to not be available. Addresses [#31781](https://github.com/cypress-io/cypress/issues/31781).

## 14.4.1

_Released 06/03/2025_

**Bugfixes:**

- Fixed an issue where `cy.session()` may fail internally if navigating to `about:blank` takes longer than the `defaultCommandTimeout`. Addresses [#29496](https://github.com/cypress-io/cypress/issues/29496).

**Misc:**

- The design of commands that display as grouped (such as `.within()` and `cy.session()`) has been updated to provide better clarity when collapsing groups. Addressed in [#31739](https://github.com/cypress-io/cypress/pull/31739).

**Dependency Updates:**

- Updated `@sinonjs/fake-timers` from `10.3.0` to `11.3.1`. Addressed in [#31746](https://github.com/cypress-io/cypress/pull/31746).

## 14.4.0

_Released 05/20/2025_

**Features:**

- `@cypress/webpack-dev-server` and `@cypress/webpack-batteries-included-preprocessor` now ship with [webpack-bundle-analyzer](https://www.npmjs.com/package/webpack-bundle-analyzer) as a diagnostic tool to determine bundle statistics, which can be enabled via `DEBUG=cypress-verbose:webpack-dev-server:bundle-analyzer` (component tests using webpack) or `DEBUG=cypress-verbose:webpack-batteries-included-preprocessor:bundle-analyzer` (e2e tests using webpack, which is the default preprocessor), respectively. Addresses [#30461](https://github.com/cypress-io/cypress/issues/30461).

**Bugfixes:**

- Fixed an issue where framebusting was occurring when `top.window.location` was being set explicitly. This fix does not require the `experimentalModifyObstructiveThirdPartyCode` configuration option. Addresses [#31687](https://github.com/cypress-io/cypress/issues/31687).
- `cy.press()` now has a return type of `Chainable<null>` instead of `void` to match the convention of other commands that yield `null`. Addressed in [#31698](https://github.com/cypress-io/cypress/pull/31698).
- Fixed an issue with the experimental usage of WebKit where Cypress incorrectly displayed `0` as the WebKit version. Addresses [#31684](https://github.com/cypress-io/cypress/issues/31684).

**Misc:**

- Chrome 137+ no longer supports `--load-extension` in branded Chrome, breaking the `@cypress/puppeteer` plugin in `open` mode and headed `run` mode and [`launchOptions.extensions`](/api/node-events/browser-launch-api#Add-browser-extensions). We recommend using Electron, Chrome for Testing or Chromium to continue using these features. See Cypress Docker image examples for [Chrome for Testing](https://github.com/cypress-io/cypress-docker-images/tree/master/examples/chrome-for-testing) and [Chromium](https://github.com/cypress-io/cypress-docker-images/tree/master/examples/chromium). Addresses [#31702](https://github.com/cypress-io/cypress/issues/31702) and [#31703](https://github.com/cypress-io/cypress/issues/31703).
- Cursor is now available as an IDE option for opening files in Cypress, if it is installed on your system. Addressed in [#31691](https://github.com/cypress-io/cypress/pull/31691).
- The error shown when the `--record` flag is missing has been updated to be shorter. Addressed in [#31676](https://github.com/cypress-io/cypress/pull/31676).

**Dependency Updates:**

- Upgraded `@sinonjs/fake-timers` from `8.1.0` to `10.3.0`. Addressed in [#31725](https://github.com/cypress-io/cypress/pull/31725) and [#31737](https://github.com/cypress-io/cypress/pull/31737).
- Upgraded `trash` from `5.2.0` to `7.2.0`. Addressed in [#31667](https://github.com/cypress-io/cypress/pull/31667).
- Upgraded `webdriver` from `9.11.0` to `9.14.0`. Addressed in [#31689](https://github.com/cypress-io/cypress/pull/31689).

## 14.3.3

_Released 05/06/2025_

**Performance:**

- Ensure the previous pausing event handlers are removed before new ones are added. Addressed in [#31596](https://github.com/cypress-io/cypress/pull/31596).

**Bugfixes:**

- Fixed an issue where the configuration setting `trashAssetsBeforeRuns=false` was ignored for assets in the `videosFolder`. These assets were incorrectly deleted before running tests with `cypress run`. Addresses [#8280](https://github.com/cypress-io/cypress/issues/8280).
- Fixed a potential hang condition when `@cypress/grep` would match many files and `stdout`/`stderr` was piped to a file. Fixes [#31625](https://github.com/cypress-io/cypress/issues/31625). Addressed in [#31631](https://github.com/cypress-io/cypress/pull/31631).
- Fixed a potential hang condition when navigating to `about:blank`. Addressed in [#31634](https://github.com/cypress-io/cypress/pull/31634).

**Misc:**

- The Assertions menu when you right click in `experimentalStudio` tests now displays in dark mode. Addresses [#10621](https://github.com/cypress-io/cypress-services/issues/10621). Addressed in [#31598](https://github.com/cypress-io/cypress/pull/31598).
- The URL in the Cypress App no longer displays a white background when the URL is loading. Fixes [#31556](https://github.com/cypress-io/cypress/issues/31556).

**Dependency Updates:**

- Downgraded `cli-table3` to `0.6.1`. Addressed in [#31631](https://github.com/cypress-io/cypress/pull/31631).

## 14.3.2

_Released 04/22/2025_

**Bugfixes:**

- Fixed an issue where auto scroll in the Cypress Command Log was not scrolling correctly. Fixes [#31530](https://github.com/cypress-io/cypress/issues/31530).
- Fixed an issue where a message pointing users to the Cypress Cloud was not displaying on runs with failures in CI. Fixes [#31550](https://github.com/cypress-io/cypress/issues/31550).

## 14.3.1

_Released 04/17/2025_

**Performance:**

- Reduced the initial timeout for the preflight API request to determine proxy conditions from sixty seconds to five, and made this timeout duration configurable with the `CYPRESS_INITIAL_PREFLIGHT_TIMEOUT` environment variable. Addresses [#28423](https://github.com/cypress-io/cypress/issues/28423). Addressed in [#31283](https://github.com/cypress-io/cypress/pull/31283).

**Bugfixes:**

- The [`cy.press()`](/api/commands/press) command no longer errors when used in specs subsequent to the first spec in run mode. Fixes [#31466](https://github.com/cypress-io/cypress/issues/31466).
- Fixed an issue where certain proxy conditions prevented test runs from being recorded. Fixes [#31485](https://github.com/cypress-io/cypress/issues/31485).

**Misc:**

- Suppress benign warnings that reference OOM score of renderer. Addresses [#29563](https://github.com/cypress-io/cypress/issues/29563). Addressed in [#31521](https://github.com/cypress-io/cypress/pull/31521).
- The UI of the reporter and URL were updated to a darker gray background for better color contrast. Addressed in [#31475](https://github.com/cypress-io/cypress/pull/31475).
- Fixed an issue where the error message output when attempting to install Cypress on an unsupported architecture included an outdated documentation link to Cypress system requirements. Fixes [#31512](https://github.com/cypress-io/cypress/issues/31512).

## 14.3.0

_Released 04/08/2025_

**Features:**

- The [`cy.press()`](/api/commands/press) command is now available. It supports dispatching native Tab keyboard events to the browser. Addresses [#31050](https://github.com/cypress-io/cypress/issues/31050). Addresses [#299](https://github.com/cypress-io/cypress/issues/299). Addressed in [#31398](https://github.com/cypress-io/cypress/pull/31398).

**Bugfixes:**

- Allows for `babel-loader` version 10 to be a peer dependency of `@cypress/webpack-preprocessor`. Fixed in [#31218](https://github.com/cypress-io/cypress/pull/31218).
- Fixed an issue where Firefox BiDi was prematurely removing prerequests on pending requests. Fixes [#31376](https://github.com/cypress-io/cypress/issues/31376).
- Fixed an [issue](https://github.com/electron/electron/issues/45398) with Electron causing slow animations and increased test times by starting a CDP screencast with a noop configuration. Fixes [#30980](https://github.com/cypress-io/cypress/issues/30980).

**Misc:**

- Added an automation command for dispatching key press events to CDP and BiDi automated browsers. Addressed in [#31366](https://github.com/cypress-io/cypress/pull/31366).
- Updated error message around `injectDocumentDomain` removal to mention a future version of Cypress instead of Cypress 15. Addresses [#31373](https://github.com/cypress-io/cypress/issues/31373). Addressed in [#31375](https://github.com/cypress-io/cypress/pull/31375).

**Dependency Updates:**

- Upgraded `mocha` from `7.0.1` to `7.2.0`. Addressed in [#31423](https://github.com/cypress-io/cypress/pull/31423) and [#31432](https://github.com/cypress-io/cypress/pull/31432).
- Upgraded `webdriver` from `9.7.3` to `9.11.0`. Addressed in [#31315](https://github.com/cypress-io/cypress/pull/31315).
- Upgraded `win-version-info` from `5.0.1` to `6.0.1`. Addressed in [#31358](https://github.com/cypress-io/cypress/pull/31358).

## 14.2.1

_Released 03/26/2025_

**Bugfixes:**

- Applies a fix from [#30730](https://github.com/cypress-io/cypress/pull/30730) and [#30099](https://github.com/cypress-io/cypress/pull/30099) related to Node.js turning on ESM flags by default in Node.js version `20.19.0`. Fixed in [#31308](https://github.com/cypress-io/cypress/pull/31308).
- Fixed an issue where Firefox BiDi was not correctly removing prerequests on expected network request failures. Fixes [#31325](https://github.com/cypress-io/cypress/issues/31325).
- Fixed an issue in `@cypress/webpack-batteries-included-preprocessor` and `@cypress/webpack-preprocessor` where sourceMaps were not being set correctly in TypeScript 5. This should now make error code frames accurate for TypeScript 5 users. Fixes [#29614](https://github.com/cypress-io/cypress/issues/29614).

**Misc:**

- The UI above the application under test now displays in dark mode. Addresses [#31106](https://github.com/cypress-io/cypress/issues/31106). Addressed in [#31360](https://github.com/cypress-io/cypress/pull/31360).

**Dependency Updates:**

- Upgraded `@cypress/request` from `3.0.7` to `3.0.8`. Addressed in [#31311](https://github.com/cypress-io/cypress/pull/31311).
- Upgraded `cross-fetch` from `3.1.8` to `4.1.0`. Addressed in [#31327](https://github.com/cypress-io/cypress/pull/31327).
- Upgraded `micromatch` from `4.0.6` to `4.0.8`. Addressed in [#31330](https://github.com/cypress-io/cypress/pull/31330).
- Upgraded `resolve` from `1.17.0` to `1.22.10`. Addressed in [#31333](https://github.com/cypress-io/cypress/pull/31333).
- Upgraded `semver` from `7.5.3` to `7.7.1`. Addressed in [#31341](https://github.com/cypress-io/cypress/pull/31341).
- Upgraded `systeminformation` from `5.21.7` to `5.22.8`. Addressed in [#31281](https://github.com/cypress-io/cypress/pull/31281).

## 14.2.0

_Released 03/12/2025_

**Features:**

- [`Cypress.stop()`](https://on.cypress.io/cypress-stop) is now available to stop the Cypress App on the current machine while tests are running. This can be useful for stopping test execution upon failures or other predefined conditions. Addresses [#518](https://github.com/cypress-io/cypress/issues/518). Addressed in [#31225](https://github.com/cypress-io/cypress/pull/31225).

**Misc:**

- The browser dropdown now has a more minimal design - showing only the icon of the browser selected to the left of the URL. The currently selected browser also now shows at the top of the browser dropdown. Browsers with longer names will now have their names correctly left aligned in the browser dropdown. Addresses [#21755](https://github.com/cypress-io/cypress/issues/21755) and [#30998](https://github.com/cypress-io/cypress/issues/30998). Addressed in [#31216](https://github.com/cypress-io/cypress/pull/31216).
- Additional CLI options will be displayed in the terminal for some Cloud error messages. Addressed in [#31211](https://github.com/cypress-io/cypress/pull/31211).
- Updated Cypress Studio with url routing to support maintaining state when reloading. Addresses [#31000](https://github.com/cypress-io/cypress/issues/31000) and [#30996](https://github.com/cypress-io/cypress/issues/30996).

**Dependency Updates:**

- Upgraded `cli-table3` from `0.5.1` to `0.6.5`. Addressed in [#31166](https://github.com/cypress-io/cypress/pull/31166).
- Upgraded `simple-git` from `3.25.0` to `3.27.0`. Addressed in [#31198](https://github.com/cypress-io/cypress/pull/31198).

## 14.1.0

_Released 02/25/2025_

**Features:**

- Firefox versions 135 and above are now automated with [WebDriver BiDi](https://www.w3.org/TR/webdriver-bidi/) instead of [Chrome Devtools Protocol](https://chromedevtools.github.io/devtools-protocol/). Addresses [#30220](https://github.com/cypress-io/cypress/issues/30220).

**Bugfixes:**

- Fixed the calculation of upload throughput units when displaying the 'stream stalled' error message during Test Replay archive uploads. Fixes [#31075](https://github.com/cypress-io/cypress/issues/31075). Addressed in [#31160](https://github.com/cypress-io/cypress/pull/31160).

**Misc:**

- Viewport width, height, and scale now display in a badge above the application under test. The dropdown describing how to set viewport height and width has been removed from the UI. Additionally, component tests now show a notice about URL navigation being disabled in component tests. Addresses [#30999](https://github.com/cypress-io/cypress/issues/30999). Addressed in [#31119](https://github.com/cypress-io/cypress/pull/31119).
- Updated types around `.readFile()` and `.scrollTo()` arguments and `Cypress.dom` methods. Addressed in [#31055](https://github.com/cypress-io/cypress/pull/31055).
- Updated types around `.shadow()` and `.root()` options. Addressed in [#31154](https://github.com/cypress-io/cypress/pull/31154).

**Dependency Updates:**

- Upgraded `chrome-remote-interface` from `0.33.2` to `0.33.3`. Addressed in [#31128](https://github.com/cypress-io/cypress/pull/31128).
- Upgraded `ci-info` from `4.0.0` to `4.1.0`. Addressed in [#31132](https://github.com/cypress-io/cypress/pull/31132).
- Upgraded `compression` from `1.7.5` to `1.8.0`. Addressed in [#31151](https://github.com/cypress-io/cypress/pull/31151).

## 14.0.3

_Released 02/11/2025_

**Bugfixes:**

- Fixed an issue in Cypress [14.0.2](#14-0-2) where privileged commands did not run correctly when a spec file or support file contained certain encoded characters. Fixes [#31034](https://github.com/cypress-io/cypress/issues/31034) and [#31060](https://github.com/cypress-io/cypress/issues/31060).

**Dependency Updates:**

- Upgraded `@cypress/request` from `3.0.6` to `3.0.7`. Addressed in [#31063](https://github.com/cypress-io/cypress/pull/31063).
- Upgraded `compression` from `1.7.4` to `1.7.5`. Addressed in [#31004](https://github.com/cypress-io/cypress/pull/31004).

## 14.0.2

_Released 02/05/2025_

**Bugfixes:**

- Fixed a regression introduced in [14.0.0](#14-0-0) where error codeframes in the runner UI were not populated with the correct data in failed retry attempts. Fixes [#30927](https://github.com/cypress-io/cypress/issues/30927).
- All commands performed in `after` and `afterEach` hooks will now correctly retry when a test fails. Commands that are actions like `.click()` and `.type()` will now perform the action in this situation also. Fixes [#2831](https://github.com/cypress-io/cypress/issues/2831).
- Fixed an issue in Cypress [14.0.0](#14-0-0) where privileged commands did not run correctly when a spec file or support file contained characters that required encoding. Fixes [#30933](https://github.com/cypress-io/cypress/issues/30933).
- Re-enabled retrying Cloud instance creation for runs that are parallel or recorded. Fixes [#31002](https://github.com/cypress-io/cypress/issues/31002).

**Misc:**

- Updated the mismatched dependencies warning message to be neutral, avoiding assumptions about upgrading or downgrading. Fixes [#30990](https://github.com/cypress-io/cypress/issues/30990).

**Dependency Updates:**

- Upgraded `mime` from `2.6.0` to `3.0.0`. Addressed in [#30966](https://github.com/cypress-io/cypress/pull/30966).

## 14.0.1

_Released 01/28/2025_

**Bugfixes:**

- Fixed an issue where Cypress would incorrectly navigate to `about:blank` when test isolation was disabled and the last test would fail and then retry. Fixes [#28527](https://github.com/cypress-io/cypress/issues/28527).
- Fixed a regression introduced in [14.0.0](#14-0-0) where an element would not return the correct visibility if its offset parent was within the clipping element. Fixes [#30922](https://github.com/cypress-io/cypress/issues/30922).
- Fixed a regression introduced in [14.0.0](#14-0-0) where the incorrect visibility would be returned when either `overflow-x` or `overflow-y` was visible but the other one was clipping. Fixed in [#30934](https://github.com/cypress-io/cypress/pull/30934).
- Fixed an issue where an `option` element would not return the correct visibility if its parent element has a clipping overflow. Fixed in [#30934](https://github.com/cypress-io/cypress/pull/30934).
- Fixed an issue where non-HTMLElement(s) may fail during assertions. Fixes [#30944](https://github.com/cypress-io/cypress/issues/30944).

**Misc:**

- Corrected the broken documentation links displayed in Cypress [14.0.0](#14-0-0). Addresses [#30951](https://github.com/cypress-io/cypress/issues/30951). Addressed in [#30953](https://github.com/cypress-io/cypress/pull/30953).
- Benign Mesa/GLX related warnings are now hidden in the terminal output when running Cypress in certain Linux environments or containers. Addresses [#29521](https://github.com/cypress-io/cypress/issues/29521) and [#29554](https://github.com/cypress-io/cypress/issues/29554).

## 14.0.0

_Released 01/16/2025_

**Summary:**

Cypress `14.0.0` improves performance of component testing and adds support for new framework and dev server versions.
`14.0.0` also includes breaking changes to `cy.origin` that are necessary to handle
[Chrome's deprecation of `document.domain` injection](https://developer.chrome.com/blog/document-domain-setter-deprecation), which should fix issues for some users in recent Chrome versions. Support for older versions of Node.js, Linux distributions, browsers and component testing frameworks and dev servers is removed.

Overall, we don't anticipate this release to be too disruptive for most users. We recommend bumping your version to see if your
tests still run as expected. As always, open any issues you find [here](https://github.com/cypress-io/cypress/issues/new?assignees=&labels=&projects=&template=1-bug-report.yml).

**Breaking Changes:**

:::info

Refer to the [v14 Migration Guide](/app/references/migration-guide#Migrating-to-Cypress-140) for help migrating your code.

:::

- Removed support for Node.js 16 and Node.js 21. Addresses [#29930](https://github.com/cypress-io/cypress/issues/29930).
- Upgraded bundled Node.js version from `18.17.0` to `20.18.1`. Addresses [#29547](https://github.com/cypress-io/cypress/issues/29547).
- Prebuilt binaries for Linux are no longer compatible with Linux distributions based on glibc `<2.28`, for example: Ubuntu 14-18, RHEL 7, CentOS 7, Amazon Linux 2. Addresses [#29601](https://github.com/cypress-io/cypress/issues/29601).
- Cypress now only officially supports the latest 3 major versions of Chrome, Firefox, and Edge - older browser versions may still work, but we recommend keeping your browsers up to date to ensure compatibility with Cypress. A warning will no longer be displayed on browser selection in the Launchpad for any 'unsupported' browser versions. Additionally, the undocumented `minSupportedVersion` property has been removed from `Cypress.browser`. Addressed in [#30462](https://github.com/cypress-io/cypress/pull/30462).
- The `cy.origin()` command must now be used when navigating between subdomains. Because this is a fairly disruptive change for users who frequently navigate between subdomains, a new configuration option is being introduced. `injectDocumentDomain` can be set to `true` in order to re-enable the injection of `document.domain` setters in Cypress. This configuration option is marked as deprecated and you'll receive a warning when Cypress is launched with this option set to `true`. It will be removed in a future version of Cypress. Addressed in [#30770](https://github.com/cypress-io/cypress/pull/30770).
- The `experimentalSkipDomainInjection` configuration has been removed and replaced with an `injectDocumentDomain` configuration. Addressed in [#30770](https://github.com/cypress-io/cypress/pull/30770).
- It is no longer possible to make a `fetch` or `XMLHttpRequest` request from the `about:blank` page in Electron (i.e. `cy.window().then((win) => win.fetch('<some-url>'))`). You must use `cy.request` instead or perform some form of initial navigation via `cy.visit()`. Addressed in [#30394](https://github.com/cypress-io/cypress/pull/30394).
- The `experimentalJustInTimeCompile` configuration option for component testing has been replaced with a `justInTimeCompile` option that is `true` by default. This option will only compile resources directly related to your spec, compiling them 'just-in-time' before spec execution. This should result in improved memory management and performance for component tests in `cypress open` and `cypress run` modes, in particular for large component testing suites. `justInTimeCompile` is now only supported for [`webpack`](https://www.npmjs.com/package/webpack). Addresses [#30234](https://github.com/cypress-io/cypress/issues/30234). Addressed in [#30641](https://github.com/cypress-io/cypress/pull/30641).
- Cypress Component Testing no longer supports:
  - `create-react-app`. Addresses [#30028](https://github.com/cypress-io/cypress/issues/30028).
  - `@vue/cli-service`. Addresses [#30481](https://github.com/cypress-io/cypress/issues/30481).
  - `Angular` versions 13, 14, 15, and 16. The minimum supported version is now `17.2.0` in order to fully support Angular [signals](https://angular.dev/guide/signals). Addresses [#29582](https://github.com/cypress-io/cypress/issues/29582). Addressed in [#30539](https://github.com/cypress-io/cypress/pull/30539).
  - `Next.js` versions 10, 11, 12, and 13. Addresses [#29583](https://github.com/cypress-io/cypress/issues/29583).
  - `Nuxt.js` version 2. Addresses [#30468](https://github.com/cypress-io/cypress/issues/30468).
  - `React` versions 16 and 17. Addresses [#29607](https://github.com/cypress-io/cypress/issues/29607).
  - `Svelte` versions 3 and 4. Addresses [#30492](https://github.com/cypress-io/cypress/issues/30492) and [#30692](https://github.com/cypress-io/cypress/issues/30692).
  - `Vue` version 2. Addresses [#30295](https://github.com/cypress-io/cypress/issues/30295).
- The `cypress/react18` test harness is no longer included in the Cypress binary. Instead, React 18 support is now shipped with `cypress/react`! Addresses [#29607](https://github.com/cypress-io/cypress/issues/29607).
- The `cypress/angular-signals` test harness is no longer included in the Cypress binary. Instead, signals support is now shipped with `cypress/angular`! This requires `rxjs` to be installed as a `peerDependency`. Addresses [#29606](https://github.com/cypress-io/cypress/issues/29606).
- The Cypress configuration wizard for Component Testing supports TypeScript 4.0 or greater. Addresses [#30493](https://github.com/cypress-io/cypress/issues/30493).
- `@cypress/webpack-dev-server` no longer supports `webpack-dev-server` version 3. Additionally, `@cypress/webpack-dev-server` now ships with `webpack-dev-server` version 5 by default. `webpack-dev-server` version 4 will need to be installed alongside Cypress if you are still using `webpack` version 4. Addresses [#29308](https://github.com/cypress-io/cypress/issues/29308), [#30347](https://github.com/cypress-io/cypress/issues/30347), and [#30141](https://github.com/cypress-io/cypress/issues/30141).
- `@cypress/vite-dev-server` no longer supports `vite` versions 2 and 3. Addresses [#29377](https://github.com/cypress-io/cypress/issues/29377) and [#29378](https://github.com/cypress-io/cypress/issues/29378).
- The `delayMs` option of `cy.intercept()` has been removed. This option was deprecated in Cypress [6.4.0](#6-4-0). Please use the `delay` option instead. Addressed in [#30463](https://github.com/cypress-io/cypress/pull/30463).
- The `experimentalFetchPolyfill` configuration option was removed. This option was deprecated in Cypress [6.0.0](#6-0-0). We recommend using `cy.intercept()` for handling fetch requests. Addressed in [#30466](https://github.com/cypress-io/cypress/pull/30466).
- We removed yielding the second argument of `before:browser:launch` as an array of browser arguments. This behavior has been deprecated since Cypress [4.0.0](#4-0-0). Addressed in [#30460](https://github.com/cypress-io/cypress/pull/30460).
- The `cypress open-ct` and `cypress run-ct` CLI commands were removed. Please use `cypress open --component` or `cypress run --component` respectively instead. Addressed in [#30456](https://github.com/cypress-io/cypress/pull/30456)
- The undocumented methods `Cypress.backend('firefox:force:gc')` and `Cypress.backend('log:memory:pressure')` were removed. Addresses [#30222](https://github.com/cypress-io/cypress/issues/30222).

**Deprecations:**

- The `resourceType` option on `cy.intercept` has been deprecated. We anticipate the resource types to change or be completely removed in the future. Our intention is to replace essential functionality dependent on the `resourceType` within Cypress in a future version (like hiding network logs that are not fetch/xhr). Please leave feedback on any essential uses of `resourceType`
  in this [GitHub issue](https://github.com/cypress-io/cypress/issues/30447). Addresses [#30433](https://github.com/cypress-io/cypress/issues/30433).
- The new `injectDocumentDomain` configuration option is released as deprecated. It will be removed in a future version of Cypress. Addressed in [#30770](https://github.com/cypress-io/cypress/pull/30770).

**Features:**

- `injectDocumentDomain`, a new configuration option, can be set to `true` in order to re-enable the injection of `document.domain` setters in Cypress. Addressed in [#30770](https://github.com/cypress-io/cypress/pull/30770).
- Cypress Component Testing now supports:
  - `React` version 19. Addresses [#29470](https://github.com/cypress-io/cypress/issues/29470).
  - `Angular` version 19. Addresses [#30175](https://github.com/cypress-io/cypress/issues/30175).
  - `Next.js` version `>=15.0.4`. Versions `15.0.0 - 15.0.3` depend on the React 19 Release Candidate and are not officially supported by Cypress, but should still work. Addresses [#30445](https://github.com/cypress-io/cypress/issues/30445).
  - `Svelte` version 5. Addresses [#29641](https://github.com/cypress-io/cypress/issues/29641).
  - `Vite` version 6. Addresses [#30591](https://github.com/cypress-io/cypress/issues/30591).

**Bugfixes:**

- Elements with `display: contents` will no longer use box model calculations for visibility, and correctly show as visible when they are visible. Fixed in [#29680](https://github.com/cypress-io/cypress/pull/29680). Fixes [#29605](https://github.com/cypress-io/cypress/issues/29605).
- Fixed a visibility issue when the element is positioned `static` or `relative` and the element's offset parent is positioned `absolute`, a descendent of the ancestor, and has no clippable overflow. Fixed in [#29689](https://github.com/cypress-io/cypress/pull/29689). Fixes [#28638](https://github.com/cypress-io/cypress/issues/28638).
- Fixed a visibility issue for elements with `textContent` but without a width or height. Fixed in [#29688](https://github.com/cypress-io/cypress/pull/29688). Fixes [#29687](https://github.com/cypress-io/cypress/issues/29687).
- Elements whose parent elements has `overflow: clip` and no height/width will now correctly show as hidden. Fixed in [#29778](https://github.com/cypress-io/cypress/pull/29778). Fixes [#23852](https://github.com/cypress-io/cypress/issues/23852).
- The CSS pseudo-class `:dir()` is now supported when testing in Electron. Addresses [#29766](https://github.com/cypress-io/cypress/issues/29766).
- Fixed an issue where the spec filename was not updating correctly when changing specs in `open` mode. Fixes [#30852](https://github.com/cypress-io/cypress/issues/30852).
- `cy.origin()` now correctly errors when the [`cy.window()`](/api/commands/window), [`cy.document()`](/api/commands/document),
  [`cy.title()`](/api/commands/title), [`cy.url()`](/api/commands/url), [`cy.location()`](/api/commands/location),
  [`cy.hash()`](/api/commands/hash), [`cy.go()`](/api/commands/go), [`cy.reload()`](/api/commands/reload),
  and [`cy.scrollTo()`](/api/commands/scrollto) commands are used outside of the `cy.origin()` command
  after the AUT has navigated away from the primary origin.
  Fixes [#30848](https://github.com/cypress-io/cypress/issues/30848).
  Fixed in [#30858](https://github.com/cypress-io/cypress/pull/30858).

**Misc:**

- Removed some component testing API stubs that were removed in [Cypress v11.0.0](/app/references/migration-guide#Component-Testing-Updates). Addressed in [#30696](https://github.com/cypress-io/cypress/pull/30696). Addresses [#30623](https://github.com/cypress-io/cypress/issues/30623).

**Dependency Updates:**

- Upgraded `electron` from `27.3.10` to `33.2.1`. Addresses [#29547](https://github.com/cypress-io/cypress/issues/29547) and [#30561](https://github.com/cypress-io/cypress/issues/30561).
- Upgraded `@electron/rebuild` from `3.2.10` to `3.7.1`. Addresses [#28766](https://github.com/cypress-io/cypress/issues/28766) and [#30632](https://github.com/cypress-io/cypress/issues/30632).
- Upgraded bundled Chromium version from `118.0.5993.159` to `130.0.6723.137`. Addresses [#29547](https://github.com/cypress-io/cypress/issues/29547) and [#30561](https://github.com/cypress-io/cypress/issues/30561).
- Updated `jQuery` from `3.4.1` to `3.7.1`. Addressed in [#30345](https://github.com/cypress-io/cypress/pull/30345).
- Updated `react` from `17.0.2` to `18.3.1` and `react-dom` from `17.0.2` to `18.3.1`. Addresses [#30511](https://github.com/cypress-io/cypress/issues/30511).
- Upgraded [`@vue/test-utils`](https://www.npmjs.com/package/@vue/test-utils) from `2.3.2` to `2.4.6`. Addresses [#26628](https://github.com/cypress-io/cypress/issues/26628).

## 13.17.0

_Released 12/17/2024_

**Features:**

- Added official support for the [Google Chrome for Testing](https://github.com/GoogleChromeLabs/chrome-for-testing) browser. Assuming the browser is in a location where it can be [auto-detected](/app/references/troubleshooting#Launching-browsers), it can be launched by providing the `--browser chrome-for-testing` option. If it can't be auto-detected, the path to the browser can also be provided. Previously [customizing the available browsers](/app/references/launching-browsers#Customize-available-browsers) was required. Addresses [#28123](https://github.com/cypress-io/cypress/issues/28123) and [#28554](https://github.com/cypress-io/cypress/issues/28554).

**Bugfixes:**

- Fixed an issue where targets may hang if `Network.enable` is not implemented for the target. Addresses [#29876](https://github.com/cypress-io/cypress/issues/29876).
- Updated Firefox `userChrome.css` to correctly hide the toolbox during headless mode. Addresses [#30721](https://github.com/cypress-io/cypress/issues/30721).
- Fixed an issue loading the `cypress.config.ts` file with Node.js version `22.12.0` if it is loaded as an ESM. Addresses [#30715](https://github.com/cypress-io/cypress/issues/30715).

**Misc:**

- Removed a comment from the scaffolded `supportFile` for component tests around CommonJS syntax. Addresses [#23287](https://github.com/cypress-io/cypress/issues/23287).

**Dependency Updates:**

- Updated `chai` from `4.2.0` to `4.5.0`. Addressed in [#30737](https://github.com/cypress-io/cypress/pull/30737).

## 13.16.1

_Released 12/04/2024_

**Bugfixes:**

- During recorded or parallel runs, execution will fail if Cypress is unable to confirm the creation of an instance instead of skipping the spec. Addresses [#30628](https://github.com/cypress-io/cypress/issues/30628).

## 13.16.0

_Released 11/19/2024_

**Features:**

- Added new [`defaultBrowser`](/app/references/configuration#Browser) configuration option to specify the default browser to launch. This option only affects the first browser launch; changing this option after the browser is already launched will have no effect. Addresses [#6646](https://github.com/cypress-io/cypress/issues/6646).

**Bugfixes:**

- Fixed an issue where some JS assets were not properly getting sourcemaps included with the vite dev server if they had a cache busting query parameter in the URL. Fixed some scenarios to ensure that the sourcemaps that were included by the vite dev server were inlined. Addressed in [#30606](https://github.com/cypress-io/cypress/pull/30606).

**Misc:**

- Updated the protocol to be able to flex logic based on project config. Addresses [#30560](https://github.com/cypress-io/cypress/issues/30560).

## 13.15.2

_Released 11/05/2024_

**Bugfixes:**

- Fixed an issue where the Cypress runner could hang in `after` or `afterEach` hooks that run Cypress commands after a page load timeout error occurs. Addresses [#30238](https://github.com/cypress-io/cypress/issues/30238).

**Misc:**

- Fixed a typo in CLI `global` option help text. Addresses [#30531](https://github.com/cypress-io/cypress/issues/30531).

**Dependency Updates:**

- Updated `mobx` from `5.15.4` to `6.13.5` and `mobx-react` from `6.1.8` to `9.1.1`. Addresses [#30509](https://github.com/cypress-io/cypress/issues/30509).
- Updated `@cypress/request` from `3.0.4` to `3.0.6`. Addressed in [#30488](https://github.com/cypress-io/cypress/pull/30488).

## 13.15.1

_Released 10/24/2024_

**Bugfixes:**

- Patched [find-process](https://github.com/yibn2008/find-process) to fix an issue where trying to clean up browser profiles can throw an error on Windows. Addresses [#30378](https://github.com/cypress-io/cypress/issues/30378).
- Fixed an issue where requests to the same resource in rapid succession may not have the appropriate static response intercept applied if there are multiple intercepts that apply for that resource. Addresses [#30375](https://github.com/cypress-io/cypress/issues/30375).

**Misc:**

- Cypress now consumes [geckodriver](https://firefox-source-docs.mozilla.org/testing/geckodriver/index.html) to help automate the Firefox browser instead of [marionette-client](https://github.com/cypress-io/marionette-client). Addresses [#30217](https://github.com/cypress-io/cypress/issues/30217).
- Cypress now consumes [webdriver](https://github.com/webdriverio/webdriverio/tree/main/packages/webdriver) to help automate the Firefox browser and [firefox-profile](https://github.com/saadtazi/firefox-profile-js) to create a firefox profile and convert it to Base64 to save user screen preferences via `xulstore.json`. Addresses [#30300](https://github.com/cypress-io/cypress/issues/30300) and [#30301](https://github.com/cypress-io/cypress/issues/30301).
- Spec information is now passed to protocol's `beforeSpec` to improve troubleshooting when reporting on errors. Addressed in [#30316](https://github.com/cypress-io/cypress/pull/30316).

**Dependency Updates:**

- Updated `simple-git` from `3.16.0` to `3.25.0`. Addressed in [#30076](https://github.com/cypress-io/cypress/pull/30076).

## 13.15.0

_Released 09/25/2024_

**Features:**

- Cypress now displays more actionable errors when a Test Replay upload takes too long, and more verbose messages when uncategorized errors occur during the upload process. Addressed in [#30235](https://github.com/cypress-io/cypress/pull/30235).

**Bugfixes:**

- Fixed an issue where Firefox was incorrectly mutating the state of click events on checkboxes after Firefox version `129` and up. Addressed in [#30245](https://github.com/cypress-io/cypress/pull/30245).
- Fixed a regression introduced in [13.13.0](#13-13-0) where 'Open in IDE' would not work for filepaths containing spaces and various other characters on Windows. Addresses [#29820](https://github.com/cypress-io/cypress/issues/29820).

**Misc:**

- Pass along the related log to the `createSnapshot` function for protocol usage. Addressed in [#30244](https://github.com/cypress-io/cypress/pull/30244).

**Dependency Updates:**

- Update `@cypress/request` from `3.0.1` to `3.0.4`. Addressed in [#30194](https://github.com/cypress-io/cypress/pull/30194).
- Updated `express` from `4.19.2` to `4.21.0`. This removes the [CVE-2024-43796](https://www.cve.org/CVERecord?id=CVE-2024-43796), [CVE-2024-45590](https://www.cve.org/CVERecord?id=CVE-2024-45590), and [CVE-2024-43800](https://www.cve.org/CVERecord?id=CVE-2024-43800) vulnerabilities being reported in security scans. Addresses [#30241](https://github.com/cypress-io/cypress/pull/30241).
- Update `launch-editor` from `2.8.0` to `2.9.1`. Addressed in [#30247](https://github.com/cypress-io/cypress/pull/30247).
- Updated `loader-utils` from `1.4.0` to `1.4.2`. This removes the [CVE-2022-37601](https://nvd.nist.gov/vuln/detail/CVE-2022-37601) vulnerability being reported in security scans. Addresses [#28208](https://github.com/cypress-io/cypress/issues/28208).
- Updated `send` from `0.17.1` to `0.19.0`. This removes the [CVE-2024-43799](https://www.cve.org/CVERecord?id=CVE-2024-43799) vulnerability being reported in security scans. Addressed in [#30241](https://github.com/cypress-io/cypress/pull/30241).

## 13.14.2

_Released 09/04/2024_

**Bugfixes:**

- Fixed an issue where Cypress could crash with a `WebSocket Connection Closed` error. Fixes [#30100](https://github.com/cypress-io/cypress/issues/30100).
- Fixed an issue where `cy.screenshot()` was timing out and Cypress was failing to start due to `GLib-GIO-ERROR` error. Reverts [#30109](https://github.com/cypress-io/cypress/pull/30109), the change to allow HiDPI screen for Wayland users. Fixes [#30172](https://github.com/cypress-io/cypress/issues/30172) and [#30160](https://github.com/cypress-io/cypress/issues/30160).

## 13.14.1

_Released 08/29/2024_

**Bugfixes:**

- Fixed an issue where no description was available for the `experimentalJustInTimeCompile` feature inside the Cypress application settings page. Addresses [#30126](https://github.com/cypress-io/cypress/issues/30126).

## 13.14.0

_Released 08/27/2024_

**Performance:**

- Fixed a potential memory leak in the Cypress server when re-connecting to an unintentionally disconnected CDP connection. Fixes [#29744](https://github.com/cypress-io/cypress/issues/29744). Addressed in [#29988](https://github.com/cypress-io/cypress/pull/29988).

**Features:**

- Added new
  [`experimentalJustInTimeCompile`](/app/references/experiments#Configuration)
  configuration option for component testing. This option will only compile resources directly related to your spec, compiling
  them 'just-in-time' before spec execution. This should result in improved memory management and performance for component
  tests in `cypress open` and `cypress run` modes, in particular for large component testing suites. [`experimentalJustInTimeCompile`](/app/references/experiments#Configuration) is currently supported for [`webpack`](https://www.npmjs.com/package/webpack) and [`vite`](https://www.npmjs.com/package/vite). Addresses [#29244](https://github.com/cypress-io/cypress/issues/29244).
- `.type({upArrow})` and `.type({downArrow})` now also works for date, month, week, time, datetime-local and range input types. Addresses [#29665](https://github.com/cypress-io/cypress/issues/29665).
- Added a `CYPRESS_SKIP_VERIFY` flag to enable suppressing Cypress verification checks. Addresses [#22243](https://github.com/cypress-io/cypress/issues/22243).
- Updated the protocol to allow making Cloud API requests. Addressed in [#30066](https://github.com/cypress-io/cypress/pull/30066).
- Passing `--browser` flag alone will automatically launch browser after being guided through project and/or testing type selection. Addressed in [#28538](https://github.com/cypress-io/cypress/pull/28538).

**Bugfixes:**

- Fixed an issue where files outside the Cypress project directory were not calculating the bundle output path correctly for the `file:preprocessor`. Addresses [#8599](https://github.com/cypress-io/cypress/issues/8599).
- Fixed an issue where Cypress would not run if Node.js version `22.7.0` was being used with TypeScript and ES Modules. Fixes [#30084](https://github.com/cypress-io/cypress/issues/30084).
- Correctly determines current browser family when choosing between `unload` and `pagehide` options in App Runner. Fixes [#29880](https://github.com/cypress-io/cypress/issues/29880).

**Misc:**

- Allow HiDPI screen running Wayland to use Cypress window/browser by adding `--ozone-platform-hint=auto` flag to Electron's runtime argument. Addresses [#20891](https://github.com/cypress-io/cypress/issues/20891).

**Dependency Updates:**

- Updated `detect-port` from `1.3.0` to `1.6.1`. Addressed in [#30038](https://github.com/cypress-io/cypress/pull/30038).

## 13.13.3

_Released 08/14/2024_

**Bugfixes:**

- A console error will no longer display in Chrome about a deprecated unload call originating from jQuery. Addressed in [#29944](https://github.com/cypress-io/cypress/pull/29944).
- Fixed an issue where certain Test Replay upload error messages were too vague. Connection failures now report the precise system error, and the stall error message is reported rather than the vague, "The user aborted a request." Addressed in [#29959](https://github.com/cypress-io/cypress/pull/29959).

**Misc:**

- Updated `cypress open` hints displayed after Cypress binary install. Addresses [#29935](https://github.com/cypress-io/cypress/issues/29935).

**Dependency Updates:**

- Updated `image-size` from `0.8.3` to `1.1.1`. Addressed in [#30023](https://github.com/cypress-io/cypress/pull/30023).

## 13.13.2

_Released 07/31/2024_

**Performance:**

- Fixed a memory leak with command logs with Test Replay enabled. Addressed in [#29939](https://github.com/cypress-io/cypress/pull/29939).
- Improved performance of `reduce` in a method within our proxy. Addressed in [#29887](https://github.com/cypress-io/cypress/pull/29887).

**Bugfixes:**

- Fixed an issue where Yarn PnP was not working correctly with Cypress and `@cypress/webpack-batteries-included-preprocessor`. Fixes [#27947](https://github.com/cypress-io/cypress/issues/27947).

**Dependency Updates:**

- Updated `@cypress/request` from `3.0.0` to `3.0.1`. Addresses [#29863](https://github.com/cypress-io/cypress/issues/29863).
- Updated `chrome-remote-interface` from `0.33.0` to `0.33.2`. Addressed in [#29932](https://github.com/cypress-io/cypress/pull/29932).
- Updated `mime` from `2.4.4` to `2.6.0`. Addressed in [#29870](https://github.com/cypress-io/cypress/pull/29870).
- Updated `strip-ansi` from `6.0.0` to `6.0.1`. Addressed in [#29931](https://github.com/cypress-io/cypress/pull/29931).

## 13.13.1

_Released 07/16/2024_

**Bugfixes:**

- Fixed an issue where unhandled `WebSocket connection closed` exceptions would be thrown when CDP connections rapidly connect, disconnect, and connect again while there are pending commands. Fixes [#29572](https://github.com/cypress-io/cypress/issues/29572).
- CLI output properly displays non-JSON response bodies when a Test Replay upload attempt returns a non-JSON response body for a non-200 status code. Addressed in [#29801](https://github.com/cypress-io/cypress/pull/29801).
- Fixed an issue where the ReadStream used to upload a Test Replay recording could erroneously be re-used when retrying in cases of retryable upload failures. Fixes [#29227](https://github.com/cypress-io/cypress/issues/29227).
- Fixed an issue where command snapshots were not being captured within the [`cy.origin()`](/api/commands/origin) command within Test Replay. Addressed in [#29828](https://github.com/cypress-io/cypress/pull/29828).

**Dependency Updates:**

- Updated `jquery` from `3.1.1` to `3.4.1`. Addresses [#29822](https://github.com/cypress-io/cypress/issues/29822). Addressed in [#29837](https://github.com/cypress-io/cypress/pull/29837).
- Replaced `json-lint` with `json-parse-even-better-errors`. This removes the [CVE-2021-23358](https://nvd.nist.gov/vuln/detail/CVE-2021-23358) vulnerability being reported in security scans. Addresses [#28207](https://github.com/cypress-io/cypress/issues/28207).
- Updated `minimatch` from `3.0.4` to `3.1.2`. Addressed in [#29821](https://github.com/cypress-io/cypress/pull/29821).

## 13.13.0

_Released 07/02/2024_

**Performance:**

- Improved performance of `experimentalSourceRewriting` option. Fixed in [#29540](https://github.com/cypress-io/cypress/pull/29540).

**Features:**

- Adds Signal support for Angular Component Testing versions 17.2 and up. Addresses [#29264](https://github.com/cypress-io/cypress/issues/29264).

**Bugfixes:**

- Fixed an issue where Chrome launch instances would not recreate the browser CRI client correctly after recovering from an unexpected browser closure. Fixes [#27657](https://github.com/cypress-io/cypress/issues/27657). Fixed in [#29663](https://github.com/cypress-io/cypress/pull/29663).
- Fixed an issue where Firefox 129 (Firefox Nightly) would not launch with Cypress. Fixes [#29713](https://github.com/cypress-io/cypress/issues/29713). Fixed in [#29720](https://github.com/cypress-io/cypress/pull/29720).

**Dependency Updates:**

- Updated `launch-editor` from `2.3.0` to `2.8.0`. Addressed in [#29770](https://github.com/cypress-io/cypress/pull/29770).
- Updated `memfs` from `3.4.12` to `3.5.3`. Addressed in [#29746](https://github.com/cypress-io/cypress/pull/29746).
- Updated `tmp` from `0.2.1` to `0.2.3`. Addresses [#29693](https://github.com/cypress-io/cypress/issues/29693).
- Updated `ws` from `5.2.3` to `5.2.4`. Addressed in [#29698](https://github.com/cypress-io/cypress/pull/29698).

## 13.12.0

_Released 06/18/2024_

**Features:**

- Added Component Testing support for Angular version 18. Addresses [#29309](https://github.com/cypress-io/cypress/issues/29309).

**Bugfixes:**

- We now trigger `input` and `change` events when typing `{upArrow}` and `{downArrow}` via `.type()` on `input[type=number]` elements. Fixes [#29611](https://github.com/cypress-io/cypress/issues/29611).
- Fixed an issue where auto scrolling the reporter would sometimes be disabled without the user's intent. Fixes [#25084](https://github.com/cypress-io/cypress/issues/25084).
- Fixed an issue where `inlineSourceMaps` was still being used when `sourceMaps` was provided in a user's TypeScript config for TypeScript version 5. Fixes [#26203](https://github.com/cypress-io/cypress/issues/26203).
- When capture protocol script fails verification, an appropriate error is now displayed. Previously, an error regarding Test Replay archive location was shown. Addressed in [#29603](https://github.com/cypress-io/cypress/pull/29603).
- Fixed an issue where receiving HTTP responses with invalid headers raised an error. Now Cypress removes the invalid headers and gives a warning in the console with debug mode on. Fixes [#28865](https://github.com/cypress-io/cypress/issues/28865).

**Misc:**

- Report afterSpec durations to Cloud API when running in record mode with Test Replay enabled. Addressed in [#29500](https://github.com/cypress-io/cypress/pull/29500).

**Dependency Updates:**

- Updated `firefox-profile` from `4.3.1` to `4.6.0`. Addressed in [#29662](https://github.com/cypress-io/cypress/pull/29662).
- Updated `typescript` from `4.7.4` to `5.3.3`. Addressed in [#29568](https://github.com/cypress-io/cypress/pull/29568).
- Updated `url-parse` from `1.5.9` to `1.5.10`. Addressed in [#29650](https://github.com/cypress-io/cypress/pull/29650).

## 13.11.0

_Released 06/04/2024_

**Performance:**

- Improved performance when setting console props within `Cypress.log`. Addressed in [#29501](https://github.com/cypress-io/cypress/pull/29501).

**Features:**

- Added support for [Next.js 14](https://nextjs.org/blog/next-14) for component testing. Addresses [#28185](https://github.com/cypress-io/cypress/issues/28185).
- Added an `IGNORE_CHROME_PREFERENCES` environment variable to ignore Chrome preferences when launching Chrome. Addresses [#29330](https://github.com/cypress-io/cypress/issues/29330).

**Bugfixes:**

- Fixed a situation where the Launchpad would hang if the project config had not been loaded when the Launchpad first queries the current project. Fixes [#29486](https://github.com/cypress-io/cypress/issues/29486).
- Pre-emptively fix behavior with Chrome for when `unload` events are forcefully deprecated by using `pagehide` as a proxy. Fixes [#29241](https://github.com/cypress-io/cypress/issues/29241).

**Misc:**

- Enhanced the type definitions available to [`cy.intercept()`](/api/commands/intercept) and [`cy.wait()`](/api/commands/wait). The `body` property of both the request and response in an interception can optionally be specified with user-defined types. Addresses [#29507](https://github.com/cypress-io/cypress/issues/29507).

## 13.10.0

_Released 05/21/2024_

**Features:**

- Added support for `vite` [`v5`](https://vitejs.dev/blog/announcing-vite5) to `@cypress/vite-dev-server`. Addresses [#28347](https://github.com/cypress-io/cypress/issues/28347).

**Bugfixes:**

- Fixed an issue where orphaned Electron processes were inadvertently terminating the browser's CRI client. Fixes [#28397](https://github.com/cypress-io/cypress/issues/28397). Fixed in [#29515](https://github.com/cypress-io/cypress/pull/29515).
- Fixed an issue where Cypress would use the wrong URL to upload Test Replay recordings when it wasn't able to determine the upload URL. It now displays an error when the upload URL cannot be determined, rather than a "Request Entity Too Large" error. Addressed in [#29512](https://github.com/cypress-io/cypress/pull/29512).
- Fixed an issue where Cypress was unable to search in the Specs list for files or folders containing numbers. Fixes [#29034](https://github.com/cypress-io/cypress/issues/29034).
- Fixed an issue setting the `x-cypress-file-path` header when there are invalid header characters in the file path. Fixes [#25839](https://github.com/cypress-io/cypress/issues/25839).
- Fixed the display of some command assertions. Fixed in [#29517](https://github.com/cypress-io/cypress/pull/29517).

**Dependency Updates:**

- Updated `js-cookie` from `2.2.1` to `3.0.5`. Addressed in [#29497](https://github.com/cypress-io/cypress/pull/29497).
- Updated `randomstring` from `1.1.5` to `1.3.0`. Addressed in [#29503](https://github.com/cypress-io/cypress/pull/29503).

## 13.9.0

_Released 05/07/2024_

**Features:**

- Added more descriptive error messages when Test Replay fails to record or upload. Addresses [#29022](https://github.com/cypress-io/cypress/issues/29022).

**Bugfixes:**

- Fixed a bug where promises rejected with `undefined` were failing inside `cy.origin()`. Addresses [#23937](https://github.com/cypress-io/cypress/issues/23937).
- We now pass the same default Chromium flags to Electron as we do to Chrome. As a result of this change, the application under test's `navigator.webdriver` property will now correctly be `true` when testing in Electron. Fixes [#27939](https://github.com/cypress-io/cypress/issues/27939).
- Fixed network issues in requests using fetch for users where Cypress is run behind a proxy that performs HTTPS decryption (common among corporate proxies). Fixes [#29171](https://github.com/cypress-io/cypress/issues/29171).
- Fixed an issue where extra windows weren't being closed between specs in Firefox causing potential issues in subsequent specs. Fixes [#29473](https://github.com/cypress-io/cypress/issues/29473).

**Misc:**

- Improved accessibility of the Cypress App in some areas. Addressed in [#29322](https://github.com/cypress-io/cypress/pull/29322).

**Dependency Updates:**

- Updated `electron` from `27.1.3` to `27.3.10` to address [CVE-2024-3156](https://nvd.nist.gov/vuln/detail/CVE-2024-3156). Addressed in [#29431](https://github.com/cypress-io/cypress/pull/29431).

## 13.8.1

_Released 04/23/2024_

**Performance:**

- Fixed a performance issue with activated service workers that aren't controlling clients which could lead to correlation timeouts. Fixes [#29333](https://github.com/cypress-io/cypress/issues/29333) and [#29126](https://github.com/cypress-io/cypress/issues/29126).

**Bugfixes:**

- Fixed a regression introduced in [13.6.0](#13-6-0) where Cypress would occasionally exit with status code 1, even when a test run was successful, due to an unhandled WebSocket exception (`Error: WebSocket connection closed`). Addresses [#28523](https://github.com/cypress-io/cypress/issues/28523).
- Fixed an issue where Cypress would hang on some commands when an invalid `timeout` option was provided. Fixes [#29323](https://github.com/cypress-io/cypress/issues/29323).

**Misc:**

- `.its()` type now excludes null and undefined. Fixes [#28872](https://github.com/cypress-io/cypress/issues/28872).

**Dependency Updates:**

- Updated `zod` from `3.20.3` to `3.22.5`. Addressed in [#29367](https://github.com/cypress-io/cypress/pull/29367).

## 13.8.0

_Released 04/18/2024_

**Features:**

- Added support for `webpack-dev-server` `v5` to `@cypress/webpack-dev-server`. Addresses [#29305](https://github.com/cypress-io/cypress/issues/29305).

**Bugfixes:**

- Fixed a regression introduced in [13.7.3](#13-7-3) where Cypress could hang handling long assertion messages. Fixes [#29350](https://github.com/cypress-io/cypress/issues/29350).

**Misc:**

- The [`SEMAPHORE_GIT_PR_NUMBER`](https://docs.semaphoreci.com/ci-cd-environment/environment-variables/#semaphore_git_pr_number) environment variable from [Semaphore](https://semaphoreci.com/) CI is now captured to display the linked PR number in the Cloud. Addressed in [#29314](https://github.com/cypress-io/cypress/pull/29314).

## 13.7.3

_Released 04/11/2024_

**Bugfixes:**

- Fixed an issue where asserts with custom messages weren't displaying properly. Fixes [#29167](https://github.com/cypress-io/cypress/issues/29167).
- Fixed an issue where Cypress launch arguments were not being escaped correctly with multiple values inside quotes. Fixes [#27454](https://github.com/cypress-io/cypress/issues/27454).

**Misc:**

- Updated the Chrome flags to not show the "Enhanced Ad Privacy" dialog. Addresses [#29199](https://github.com/cypress-io/cypress/issues/29199).
- Suppresses benign warnings that reference Vulkan on GPU-less hosts. Addresses [#29085](https://github.com/cypress-io/cypress/issues/29085). Addressed in [#29278](https://github.com/cypress-io/cypress/pull/29278).

## 13.7.2

_Released 04/02/2024_

**Performance:**

- Improvements to Test Replay upload resiliency. Fixes [#28890](https://github.com/cypress-io/cypress/issues/28890). Addressed in [#29174](https://github.com/cypress-io/cypress/pull/29174).

**Bugfixes:**

- Fixed an issue where Cypress was not executing beyond the first spec in `cypress run` for versions of Firefox 124 and up when a custom user agent was provided. Fixes [#29190](https://github.com/cypress-io/cypress/issues/29190).
- Fixed a bug where fields using arrays in `cypress.config` are not correctly processed. Fixes [#27103](https://github.com/cypress-io/cypress/issues/27103). Fixed in [#27312](https://github.com/cypress-io/cypress/pull/27312).
- Fixed a hang where Cypress would run indefinitely while recording to the cloud when CDP disconnects during the middle of a test. Fixes [#29209](https://github.com/cypress-io/cypress/issues/29209).
- Fixed a bug where option values containing quotation marks could not be selected. Fixes [#29213](https://github.com/cypress-io/cypress/issues/29213).

**Dependency Updates:**

- Updated `express` from `4.17.3` to `4.19.2`. Addressed in [#29211](https://github.com/cypress-io/cypress/pull/29211).

## 13.7.1

_Released 03/21/2024_

**Bugfixes:**

- Fixed an issue where Cypress was not executing beyond the first spec in `cypress run` for versions of Firefox 124 and up. Fixes [#29172](https://github.com/cypress-io/cypress/issues/29172).
- Fixed an issue blurring shadow dom elements. Fixed in [#29125](https://github.com/cypress-io/cypress/pull/29125).

**Dependency Updates:**

- Updated `jose` from `4.11.2` to `4.15.5`. Addressed in [#29086](https://github.com/cypress-io/cypress/pull/29086).

## 13.7.0

_Released 03/13/2024_

**Features:**

- Added shadow DOM snapshot support within Test Replay in order to highlight elements correctly within the Cypress reporter. Addressed in [#28823](https://github.com/cypress-io/cypress/pull/28823).
- Added TypeScript support for [Vue 2.7+](https://github.com/vuejs/vue/blob/main/CHANGELOG.md#270-2022-07-01). Addresses [#28591](https://github.com/cypress-io/cypress/issues/28591).
- Adds additional context to error messages displayed when Test Replay artifacts fail to upload. Addressed in [#28986](https://github.com/cypress-io/cypress/pull/28986).

**Performance:**

- Fixed a performance regression from [13.6.3](#13-6-3) where unhandled service worker requests may not correlate correctly. Fixes [#28868](https://github.com/cypress-io/cypress/issues/28868).
- Reduces the number of attempts to retry failed Test Replay artifact uploads from 8 to 3, to reduce time spent on artifact upload attempts that will not succeed. Addressed in [#28986](https://github.com/cypress-io/cypress/pull/28986).

**Bugfixes:**

- Changed screenshot capture behavior in Chromium to activate the main Cypress tab before capturing. This prevents screenshot capture from timing out in certain situations. Fixed in [#29038](https://github.com/cypress-io/cypress/pull/29038). Fixes [#5016](https://github.com/cypress-io/cypress/issues/5016)
- Fixed an issue where `.click()` commands on children of disabled elements would still produce "click" events -- even without `{ force: true }`. Fixes [#28788](https://github.com/cypress-io/cypress/issues/28788).
- Changed RequestBody type to allow for boolean and null literals to be passed as body values. [#28789](https://github.com/cypress-io/cypress/issues/28789).

**Misc:**

- Changed Component Testing scaffolding instruction to `pnpm add` to add framework dependencies when a project uses `pnpm` as package manager. Addresses [#29052](https://github.com/cypress-io/cypress/issues/29052).
- Command messages in the Cypress command logs will now truncate display at 100 lines instead of 50. Fixes [#29023](https://github.com/cypress-io/cypress/issues/29023).
- Capture the `beforeTest` timestamp inside the browser for the purposes of accurately determining test start for Test Replay. Addressed in [#29061](https://github.com/cypress-io/cypress/pull/29061).

**Dependency Updates:**

- Updated [`jimp`](https://www.npmjs.com/package/jimp) from `0.14.0` to `0.22.12`. Addressed in [#29055](https://github.com/cypress-io/cypress/pull/29055).
- Updated [`http-proxy-middleware`](https://www.npmjs.com/package/http-proxy-middleware) from `2.0.4` to `2.0.6`. Addressed in [#28902](https://github.com/cypress-io/cypress/pull/28902).
- Updated [`signal-exit`](https://www.npmjs.com/package/signal-exit) from `3.0.3` to `3.0.7`. Addressed in [#28979](https://github.com/cypress-io/cypress/pull/28979).

## 13.6.6

_Released 02/22/2024_

**Bugfixes:**

- Fixed a regression introduced in [13.6.5](#13-6-5) where `cypress verify` would fail for [`nx`](https://nx.dev/) users. Fixes [#28982](https://github.com/cypress-io/cypress/issues/28982).

## 13.6.5

_Released 02/20/2024_

**Bugfixes:**

- Fixed tests hanging when the Chrome browser extension is disabled. Fixes [#28392](https://github.com/cypress-io/cypress/issues/28392).
- Fixed an issue which caused the browser to relaunch after closing the browser from the Launchpad. Fixes [#28852](https://github.com/cypress-io/cypress/issues/28852).
- Fixed an issue with the unzip promise never being rejected when an empty error happens. Fixed in [#28850](https://github.com/cypress-io/cypress/pull/28850).
- Fixed a regression introduced in [13.6.3](#13-6-3) where Cypress could crash when processing service worker requests through our proxy. Fixes [#28950](https://github.com/cypress-io/cypress/issues/28950).
- Fixed incorrect type definition of `dom.getContainsSelector`. Fixed in [#28339](https://github.com/cypress-io/cypress/pull/28339).

**Misc:**

- Improved accessibility of the Cypress App in some areas. Addressed in [#28774](https://github.com/cypress-io/cypress/pull/28774).
- Changed references of LayerCI to webapp.io. Addressed in [#28874](https://github.com/cypress-io/cypress/pull/28874).

**Dependency Updates:**

- Upgraded `electron` from `25.8.4` to `27.1.3`.
- Upgraded bundled Node.js version from `18.15.0` to `18.17.0`.
- Upgraded bundled Chromium version from `114.0.5735.289` to `118.0.5993.117`.
- Updated `buffer` from `5.6.0` to `5.7.1`. Addressed in [#28934](https://github.com/cypress-io/cypress/pull/28934).
- Updated [`duplexify`](https://www.npmjs.com/package/duplexify) from `4.1.1` to `4.1.2`. Addressed in [#28941](https://github.com/cypress-io/cypress/pull/28941).
- Updated [`is-ci`](https://www.npmjs.com/package/is-ci) from `3.0.0` to `3.0.1`. Addressed in [#28933](https://github.com/cypress-io/cypress/pull/28933).

## 13.6.4

_Released 01/30/2024_

**Performance:**

- Fixed a performance regression from [13.3.2](#13-3-2) where aborted requests may not correlate correctly. Fixes [#28734](https://github.com/cypress-io/cypress/issues/28734).

**Bugfixes:**

- Fixed an issue with capturing assets for Test Replay when service workers are registered in Cypress support files. This issue would cause styles to not render properly in Test Replay. Fixes [#28747](https://github.com/cypress-io/cypress/issues/28747).

**Misc:**

- Added missing properties to the `Cypress.spec` interface for TypeScript users. Addresses [#27835](https://github.com/cypress-io/cypress/issues/27835).

## 13.6.3

_Released 01/16/2024_

**Bugfixes:**

- Force `moduleResolution` to `node` when TypeScript projects are detected to correctly run Cypress. This change should not have a large impact as `commonjs` is already forced when `ts-node` is registered. This fix does not impact the ESM TypeScript configuration loader. Fixes [#27731](https://github.com/cypress-io/cypress/issues/27731).
- No longer wait for additional frames when recording a video for a spec that was skipped by the Cloud due to Auto Cancellation. Fixes [#27898](https://github.com/cypress-io/cypress/issues/27898).
- Now `node_modules` will not be ignored if a project path or a provided path to spec files contains it. Fixes [#23616](https://github.com/cypress-io/cypress/issues/23616).
- Updated display of assertions and commands with a URL argument to escape markdown formatting so that values are displayed as is and assertion values display as bold. Fixes [#24960](https://github.com/cypress-io/cypress/issues/24960) and [#28100](https://github.com/cypress-io/cypress/issues/28100).
- When generating assertions via Cypress Studio, the preview of the generated assertions now correctly displays the past tense of 'expected' instead of 'expect'. Fixed in [#28593](https://github.com/cypress-io/cypress/pull/28593).
- Fixed a regression in [13.6.2](#13-6-2) where the `body` element was not highlighted correctly in Test Replay. Fixed in [#28627](https://github.com/cypress-io/cypress/pull/28627).
- Correctly sync `Cypress.currentRetry` with secondary origin so test retries that leverage [`cy.origin()`](/api/commands/origin) render logs as expected. Fixes [#28574](https://github.com/cypress-io/cypress/issues/28574).
- Fixed an issue where some cross-origin logs, like assertions or cy.clock(), were getting too many dom snapshots. Fixes [#28609](https://github.com/cypress-io/cypress/issues/28609).
- Fixed asset capture for Test Replay for requests that are routed through service workers. This addresses an issue where styles were not being applied properly in Test Replay and [`cy.intercept()`](/api/commands/intercept) was not working properly for requests in this scenario. Fixes [#28516](https://github.com/cypress-io/cypress/issues/28516).
- Fixed an issue where visiting an `http://` site would result in an infinite reload/redirect loop in Chrome 114+. Fixes [#25891](https://github.com/cypress-io/cypress/issues/25891).
- Fixed an issue where requests made from extra tabs do not include their original headers. Fixes [#28641](https://github.com/cypress-io/cypress/issues/28641).
- Fixed an issue where [`cy.wait()`](/api/commands/wait) would sometimes throw an error reading a property of undefined when returning responses. Fixes [#28233](https://github.com/cypress-io/cypress/issues/28233).

**Performance:**

- Fixed a performance regression from [13.3.2](#13-3-2) where requests may not correlate correctly when test isolation is off. Fixes [#28545](https://github.com/cypress-io/cypress/issues/28545).

**Dependency Updates:**

- Remove dependency on `@types/node` package. Addresses [#28473](https://github.com/cypress-io/cypress/issues/28473).
- Updated [`@cypress/unique-selector`](https://www.npmjs.com/package/@cypress/unique-selector) to include a performance optimization. It's possible this could improve performance of the selector playground. Addressed in [#28571](https://github.com/cypress-io/cypress/pull/28571).
- Replace [`CircularJSON`](https://www.npmjs.com/package/circular-json) with its successor [`flatted`](https://www.npmjs.com/package/flatted) version `3.2.9`. This resolves decoding issues observed in complex objects sent from the browser. Addressed in [#28683](https://github.com/cypress-io/cypress/pull/28683).
- Updated [`better-sqlite3`](https://www.npmjs.com/package/better-sqlite3) from `8.7.0` to `9.2.2` to fix macOS Catalina issues. Addresses [#28697](https://github.com/cypress-io/cypress/issues/28697).

**Misc:**

- Improved accessibility of some areas of the Cypress App. Addressed in [#28628](https://github.com/cypress-io/cypress/pull/28628).
- Updated some documentation links to go through on.cypress.io. Addressed in [#28623](https://github.com/cypress-io/cypress/pull/28623).

## 13.6.2

_Released 12/26/2023_

**Bugfixes:**

- Fixed a regression in [13.6.1](#13-6-1) where a malformed URI would crash Cypress. Fixes [#28521](https://github.com/cypress-io/cypress/issues/28521).
- Fixed a regression in [12.4.0](#12-4-0) where erroneous `<br>` tags were displaying in error messages in the Command Log making them less readable. Fixes [#28452](https://github.com/cypress-io/cypress/issues/28452).

**Performance:**

- Improved performance when finding unique selectors for command log snapshots for Test Replay. Addressed in [#28536](https://github.com/cypress-io/cypress/pull/28536).

**Dependency Updates:**

- Updated `ts-node` from `10.9.1` to `10.9.2`. Cypress will longer error during `cypress run` or `cypress open` when using typescript 5.3.2+ with `extends` in `tsconfig.json`. Addresses [#28385](https://github.com/cypress-io/cypress/issues/28385).

## 13.6.1

_Released 12/05/2023_

**Bugfixes:**

- Fixed an issue where pages or downloads opened in a new tab were missing basic auth headers. Fixes [#28350](https://github.com/cypress-io/cypress/issues/28350).
- Fixed an issue where request logging would default the `message` to the `args` of the currently running command even though those `args` would not apply to the request log and are not displayed. If the `args` are sufficiently large (e.g. when running the `cy.task` from the [code-coverage](https://github.com/cypress-io/code-coverage/) plugin) there could be performance/memory implications. Addressed in [#28411](https://github.com/cypress-io/cypress/pull/28411).
- Fixed an issue where commands would fail with the error `must only be invoked from the spec file or support file` if the project's `baseUrl` included basic auth credentials. Fixes [#27457](https://github.com/cypress-io/cypress/issues/27457) and [#28336](https://github.com/cypress-io/cypress/issues/28336).
- Fixed an issue where some URLs would timeout in pre-request correlation. Addressed in [#28427](https://github.com/cypress-io/cypress/pull/28427).
- Cypress will now correctly log errors and debug logs on Linux machines. Fixes [#5051](https://github.com/cypress-io/cypress/issues/5051) and [#24713](https://github.com/cypress-io/cypress/issues/24713).

**Misc:**

- Artifact upload duration is now reported to Cypress Cloud. Fixes [#28238](https://github.com/cypress-io/cypress/issues/28238). Addressed in [#28418](https://github.com/cypress-io/cypress/pull/28418).

## 13.6.0

_Released 11/21/2023_

**Features:**

- Added an activity indicator to CLI output when artifacts (screenshots, videos, or Test Replay) are being uploaded to the cloud. Addresses [#28239](https://github.com/cypress-io/cypress/issues/28239). Addressed in [#28277](https://github.com/cypress-io/cypress/pull/28277).
- When artifacts are uploaded to the Cypress Cloud, the duration of each upload will be displayed in the terminal. Addresses [#28237](https://github.com/cypress-io/cypress/issues/28237).

**Bugfixes:**

- We now allow absolute paths when setting `component.indexHtmlFile` in the Cypress config. Fixes [#27750](https://github.com/cypress-io/cypress/issues/27750).
- Fixed an issue where dynamic intercept aliases now show with alias name instead of "no alias" in driver. Addresses [#24653](https://github.com/cypress-io/cypress/issues/24653)
- Fixed an issue where [aliasing individual requests](/api/commands/intercept#Aliasing-individual-requests) with `cy.intercept()` led to an error when retrieving all of the aliases with `cy.get(@alias.all)` . Addresses [#25448](https://github.com/cypress-io/cypress/issues/25448)
- The URL of the application under test and command error "Learn more" links now open externally instead of in the Cypress-launched browser. Fixes [#24572](https://github.com/cypress-io/cypress/issues/24572).
- Fixed issue where some URLs would timeout in pre-request correlation. Addressed in [#28354](https://github.com/cypress-io/cypress/pull/28354).

**Misc:**

- Browser tabs and windows other than the Cypress tab are now closed between tests in Chromium-based browsers. Addressed in [#28204](https://github.com/cypress-io/cypress/pull/28204).
- Cypress now ensures the main browser tab is active before running each command in Chromium-based browsers. Addressed in [#28334](https://github.com/cypress-io/cypress/pull/28334).

**Dependency Updates:**

- Upgraded [`chrome-remote-interface`](https://www.npmjs.com/package/chrome-remote-interface) from `0.31.3` to `0.33.0` to increase the max payload from 100MB to 256MB. Addressed in [#27998](https://github.com/cypress-io/cypress/pull/27998).

## 13.5.1

_Released 11/14/2023_

**Bugfixes:**

- Fixed a regression in [13.5.0](#13-5-0) where requests cached within a given spec may take longer to load than they did previously. Addresses [#28295](https://github.com/cypress-io/cypress/issues/28295).
- Fixed an issue where pages opened in a new tab were missing response headers, causing them not to load properly. Fixes [#28293](https://github.com/cypress-io/cypress/issues/28293) and [#28303](https://github.com/cypress-io/cypress/issues/28303).
- We now pass a flag to Chromium browsers to disable default component extensions. This is a common flag passed during browser automation. Fixed in [#28294](https://github.com/cypress-io/cypress/pull/28294).

## 13.5.0

_Released 11/08/2023_

**Features:**

- Added Component Testing support for [Angular](https://angular.io/) version 17. Addresses [#28153](https://github.com/cypress-io/cypress/issues/28153).

**Bugfixes:**

- Fixed an issue in chromium based browsers, where global style updates can trigger flooding of font face requests in DevTools and Test Replay. This can affect performance due to the flooding of messages in CDP. Fixes [#28150](https://github.com/cypress-io/cypress/issues/28150) and [#28215](https://github.com/cypress-io/cypress/issues/28215).
- Fixed a regression in [13.3.3](#13-3-3) where Cypress would hang on loading shared workers when using `cy.reload` to reload the page. Fixes [#28248](https://github.com/cypress-io/cypress/issues/28248).
- Fixed an issue where network requests made from tabs, or windows other than the main Cypress tab, would be delayed. Fixes [#28113](https://github.com/cypress-io/cypress/issues/28113).
- Fixed an issue with 'other' targets (e.g. pdf documents embedded in an object tag) not fully loading. Fixes [#28228](https://github.com/cypress-io/cypress/issues/28228) and [#28162](https://github.com/cypress-io/cypress/issues/28162).
- Fixed an issue where clicking a link to download a file could cause a page load timeout when the download attribute was missing. Note: download behaviors in experimental WebKit are still an issue. Fixes [#14857](https://github.com/cypress-io/cypress/issues/14857).
- Fixed an issue to account for canceled and failed downloads to correctly reflect these status in Command log as a download failure where previously it would be pending. Fixed in [#28222](https://github.com/cypress-io/cypress/pull/28222).
- Fixed an issue determining visibility when an element is hidden by an ancestor with a shared edge. Fixes [#27514](https://github.com/cypress-io/cypress/issues/27514).
- We now pass a flag to Chromium browsers to disable Chrome translation, both the manual option and the popup prompt, when a page with a differing language is detected. Fixes [#28225](https://github.com/cypress-io/cypress/issues/28225).
- Stopped processing CDP events at the end of a spec when Test Isolation is off and Test Replay is enabled. Addressed in [#28213](https://github.com/cypress-io/cypress/pull/28213).

## 13.4.0

_Released 10/30/2023_

**Features:**

- Introduced experimental configuration options for advanced retry logic: adds `experimentalStrategy` and `experimentalOptions` keys to the `retry` configuration key. See [Experimental Flake Detection Features](/app/references/experiments#Experimental-Flake-Detection-Features) for more information. Addressed in [#27930](https://github.com/cypress-io/cypress/pull/27930).

**Bugfixes:**

- Fixed a regression in [13.3.2](#13-3-2) where Cypress would crash with 'Inspected target navigated or closed' or 'Session with given id not found'. Fixes [#28141](https://github.com/cypress-io/cypress/issues/28141) and [#28148](https://github.com/cypress-io/cypress/issues/28148).

## 13.3.3

_Released 10/24/2023_

**Bugfixes:**

- Fixed a performance regression in [13.3.1](#13-3-1) with proxy correlation timeouts and requests issued from web and shared workers. Fixes [#28104](https://github.com/cypress-io/cypress/issues/28104).
- Fixed a performance problem with proxy correlation when requests get aborted and then get miscorrelated with follow up requests. Addressed in [#28094](https://github.com/cypress-io/cypress/pull/28094).
- Fixed a regression in [10.0.0](#10-0-0), where search would not find a spec if the file name contains "-" or "\_", but search prompt contains " " instead (e.g. search file "spec-file.cy.ts" with prompt "spec file"). Fixes [#25303](https://github.com/cypress-io/cypress/issues/25303).

## 13.3.2

_Released 10/18/2023_

**Bugfixes:**

- Fixed a performance regression in [13.3.1](#13-3-1) with proxy correlation timeouts and requests issued from service workers. Fixes [#28054](https://github.com/cypress-io/cypress/issues/28054) and [#28056](https://github.com/cypress-io/cypress/issues/28056).
- Fixed an issue where proxy correlation would leak over from a previous spec causing performance problems, `cy.intercept` problems, and Test Replay asset capturing issues. Addressed in [#28060](https://github.com/cypress-io/cypress/pull/28060).
- Fixed an issue where redirects of requests that knowingly don't have CDP traffic should also be assumed to not have CDP traffic. Addressed in [#28060](https://github.com/cypress-io/cypress/pull/28060).
- Fixed an issue with Accept Encoding headers by forcing gzip when no accept encoding header is sent and using identity if gzip is not sent. Fixes [#28025](https://github.com/cypress-io/cypress/issues/28025).

**Dependency Updates:**

- Upgraded [`@babel/core`](https://www.npmjs.com/package/@babel/core) from `7.22.9` to `7.23.2` to address the [SNYK-JS-SEMVER-3247795](https://snyk.io/vuln/SNYK-JS-SEMVER-3247795) security vulnerability. Addressed in [#28063](https://github.com/cypress-io/cypress/pull/28063).
- Upgraded [`@babel/traverse`](https://www.npmjs.com/package/@babel/traverse) from `7.22.8` to `7.23.2` to address the [SNYK-JS-BABELTRAVERSE-5962462](https://snyk.io/vuln/SNYK-JS-BABELTRAVERSE-5962462) security vulnerability. Addressed in [#28063](https://github.com/cypress-io/cypress/pull/28063).
- Upgraded [`react-docgen`](https://www.npmjs.com/package/react-docgen) from `6.0.0-alpha.3` to `6.0.4` to address the [SNYK-JS-BABELTRAVERSE-5962462](https://snyk.io/vuln/SNYK-JS-BABELTRAVERSE-5962462) security vulnerability. Addressed in [#28063](https://github.com/cypress-io/cypress/pull/28063).

## 13.3.1

_Released 10/11/2023_

**Bugfixes:**

- Fixed an issue where requests were correlated in the wrong order in the proxy. This could cause an issue where the wrong request is used for `cy.intercept` or assets (e.g. stylesheets or images) may not properly be available in Test Replay. Addressed in [#27892](https://github.com/cypress-io/cypress/pull/27892).
- Fixed an issue where a crashed Chrome renderer can cause the Test Replay recorder to hang. Addressed in [#27909](https://github.com/cypress-io/cypress/pull/27909).
- Fixed an issue where multiple responses yielded from calls to `cy.wait()` would sometimes be out of order. Fixes [#27337](https://github.com/cypress-io/cypress/issues/27337).
- Fixed an issue where requests were timing out in the proxy. This could cause an issue where the wrong request is used for `cy.intercept` or assets (e.g. stylesheets or images) may not properly be available in Test Replay. Addressed in [#27976](https://github.com/cypress-io/cypress/pull/27976).
- Fixed an issue where Test Replay couldn't record tests due to issues involving `GLIBC`. Fixed deprecation warnings during the rebuild of better-sqlite3. Fixes [#27891](https://github.com/cypress-io/cypress/issues/27891) and [#27902](https://github.com/cypress-io/cypress/issues/27902).
- Enables test replay for executed specs in runs that have a spec that causes a browser crash. Addressed in [#27786](https://github.com/cypress-io/cypress/pull/27786).

## 13.3.0

_Released 09/27/2023_

**Features:**

- Introduces new layout for Runs page providing additional run information. Addresses [#27203](https://github.com/cypress-io/cypress/issues/27203).

**Bugfixes:**

- Fixed an issue where actionability checks trigger a flood of font requests. Removing the font requests has the potential to improve performance and removes clutter from Test Replay. Addressed in [#27860](https://github.com/cypress-io/cypress/pull/27860).
- Fixed network stubbing not permitting status code 999. Fixes [#27567](https://github.com/cypress-io/cypress/issues/27567). Addressed in [#27853](https://github.com/cypress-io/cypress/pull/27853).

## 13.2.0

_Released 09/12/2023_

**Features:**

- Adds support for Nx users who want to run Angular Component Testing in parallel. Addressed in [#27723](https://github.com/cypress-io/cypress/pull/27723).

**Bugfixes:**

- Edge cases where `cy.intercept()` would not properly intercept and asset response bodies would not properly be captured for Test Replay have been addressed. Addressed in [#27771](https://github.com/cypress-io/cypress/pull/27771).
- Fixed an issue where `enter`, `keyup`, and `space` events were not triggering `click` events properly in some versions of Firefox. Addressed in [#27715](https://github.com/cypress-io/cypress/pull/27715).
- Fixed a regression in `13.0.0` where tests using Basic Authorization can potentially hang indefinitely on chromium browsers. Addressed in [#27781](https://github.com/cypress-io/cypress/pull/27781).

**Dependency Updates:**

- Upgraded Electron from `21.0.0` to `25.8.0`, which updates bundled Chromium from `106.0.5249.51` to `114.0.5735.289`.
  Additionally, the Node version binary has been upgraded from `16.16.0` to `18.15.0`. This does **NOT** have an impact on the node version you are using with Cypress and is merely an internal update to the repository & shipped binary.
  Addressed in [#27715](https://github.com/cypress-io/cypress/pull/27715). Addresses [#27595](https://github.com/cypress-io/cypress/issues/27595).

## 13.1.0

_Released 08/31/2023_

**Features:**

- Introduces a status icon representing the `latest` test run in the Sidebar for the Runs Page. Addresses [#27206](https://github.com/cypress-io/cypress/issues/27206).

**Bugfixes:**

- Fixed a regression introduced in Cypress [13.0.0](#13-0-0) where the [Module API](/app/references/module-api), [`after:run`](/api/node-events/after-run-api), and [`after:spec`](/api/node-events/after-spec-api) results did not include the `stats.skipped` field for each run result. Fixes [#27694](https://github.com/cypress-io/cypress/issues/27694). Addressed in [#27695](https://github.com/cypress-io/cypress/pull/27695).
- Individual CDP errors that occur while capturing data for Test Replay will no longer prevent the entire run from being available. Addressed in [#27709](https://github.com/cypress-io/cypress/pull/27709).
- Fixed an issue where the release date on the `v13` landing page was a day behind. Fixed in [#27711](https://github.com/cypress-io/cypress/pull/27711).
- Fixed an issue where fatal protocol errors would leak between specs causing all subsequent specs to fail to upload protocol information. Fixed in [#27720](https://github.com/cypress-io/cypress/pull/27720)
- Updated `plist` from `3.0.6` to `3.1.0` to address [CVE-2022-37616](https://github.com/advisories/GHSA-9pgh-qqpf-7wqj) and [CVE-2022-39353](https://github.com/advisories/GHSA-crh6-fp67-6883). Fixed in [#27710](https://github.com/cypress-io/cypress/pull/27710).

## 13.0.0

_Released 08/29/2023_

**Summary:**

When recording to Cypress Cloud, users now receive our newest feature: [Test Replay](/cloud/features/test-replay). Test Replay brings the debugging experience you know and love from the Cypress app directly into your recorded tests in Cypress Cloud.

Previously, trying to debug failures and flake in CI was painful and time consuming with only videos & screenshots. Test Replay provides a way to inspect the DOM, network events, and console logs of your application from your tests exactly as they ran in CI.

Test Replay is available in all Cypress Cloud plans. To start using Test Replay, simply record a run to Cypress Cloud. Learn more in the [Test Replay documentation](/cloud/features/test-replay).

Test Replay now serves as the primary replacement for debugging via video. Video capture and `videoCompression` of captured video are now set to `false` by default and `videoUploadOnPasses` is removed.

Read more about v13.0.0 in [our blog post](https://on.cypress.io/cypress-13-release).

**Breaking Changes:**

:::info

Refer to the [v13 Migration Guide](/app/references/migration-guide#Migrating-to-Cypress-130) for help migrating your code.

:::

- The [`video`](/app/references/configuration#Videos) configuration option now defaults to `false`. Addresses [#26157](https://github.com/cypress-io/cypress/issues/26157).
- The [`videoCompression`](/app/references/configuration#Videos) configuration option now defaults to `false`. Addresses [#26160](https://github.com/cypress-io/cypress/issues/26160).
- The [`videoUploadOnPasses`](/app/references/configuration#Videos) configuration option has been removed. Please see our [screenshots & videos guide](/app/guides/screenshots-and-videos#Delete-videos-for-specs-without-failing-or-retried-tests) on how to accomplish similar functionality. Addresses [#26899](https://github.com/cypress-io/cypress/issues/26899).
- Requests for assets at relative paths for component testing are now correctly forwarded to the dev server. Fixes [#26725](https://github.com/cypress-io/cypress/issues/26725).
- The [`cy.readFile()`](/api/commands/readfile) command is now retry-able as a [query command](/app/core-concepts/retry-ability). This should not affect any tests using it; the functionality is unchanged. However, it can no longer be overwritten using [`Cypress.Commands.overwrite()`](/api/cypress-api/custom-commands#Overwrite-Existing-Commands). Addressed in [#25595](https://github.com/cypress-io/cypress/pull/25595).
- The deprecated configuration option `nodeVersion` has been removed. Addresses [#27016](https://github.com/cypress-io/cypress/issues/27016).
- The properties and values returned by the [Module API](/app/references/module-api) and included in the arguments of handlers for the [`after:run`](/api/node-events/after-run-api) and [`after:spec`](/api/node-events/after-spec-api) have been changed to be more consistent. Addresses [#23805](https://github.com/cypress-io/cypress/issues/23805).
- For Cypress Cloud runs with Test Replay enabled, the Cypress Runner UI is now hidden during the run. This change was made to improve performance in situations where the Runner no longer needs to be rendered. If video is recorded during the run, the Runner will not be visible. In addition, if a screenshot with `capture: runner` is taken, the screenshot will be taken as if the `capture: viewport` option was passed. You can turn off this behavior by passing [`--runner-ui`](/app/references/command-line#cypress-run-runner-ui). Addressed in [#27482](https://github.com/cypress-io/cypress/pull/27482).
- The browser and browser page unexpectedly closing in the middle of a test run are now gracefully handled. Addressed in [#27592](https://github.com/cypress-io/cypress/issues/27592).
- Automation performance is now improved by switching away from websockets to direct CDP calls for Chrome and Electron browsers. Addressed in [#27592](https://github.com/cypress-io/cypress/issues/27592).
- Edge cases where `cy.intercept` would not properly intercept have been addressed. Addressed in [#27592](https://github.com/cypress-io/cypress/issues/27592).
- Node 14 support has been removed and Node 16 support has been deprecated. Node 16 may continue to work with Cypress `v13`, but will not be supported moving forward to closer coincide with [Node 16's end-of-life](https://nodejs.org/en/blog/announcements/nodejs16-eol) schedule. It is recommended that users update to at least Node 18.
- The minimum supported TypeScript version is `4.x`.

**Features:**

- Added [`--runner-ui`](/app/references/command-line#cypress-run-runner-ui) and [`--no-runner-ui`](/app/references/command-line#cypress-run-no-runner-ui) CLI flags to control whether the Cypress Runner UI is visible during a run. Addressed in [#27582](https://github.com/cypress-io/cypress/pull/27582).
- Consolidates and improves terminal output when uploading test artifacts to Cypress Cloud. Addressed in [#27402](https://github.com/cypress-io/cypress/pull/27402)

**Bugfixes:**

- Fixed an issue where Cypress's internal `tsconfig` would conflict with properties set in the user's `tsconfig.json` such as `module` and `moduleResolution`. Fixes [#26308](https://github.com/cypress-io/cypress/issues/26308) and [#27448](https://github.com/cypress-io/cypress/issues/27448).
- Clarified Svelte 4 works correctly with Component Testing and updated dependencies checks to reflect this. It was incorrectly flagged as not supported. Fixes [#27465](https://github.com/cypress-io/cypress/issues/27465).
- Resolve the `process/browser` global inside `@cypress/webpack-batteries-included-preprocessor` to resolve to `process/browser.js` in order to explicitly provide the file extension. File resolution must include the extension for `.mjs` and `.js` files inside ESM packages in order to resolve correctly. Fixes [#27599](https://github.com/cypress-io/cypress/issues/27599).
- Fixed an issue where the correct `pnp` process was not being discovered. Fixes [#27562](https://github.com/cypress-io/cypress/issues/27562).
- Fixed incorrect type declarations for Cypress and Chai globals that asserted them to be local variables of the global scope rather than properties on the global object. Fixes [#27539](https://github.com/cypress-io/cypress/issues/27539). Fixed in [#27540](https://github.com/cypress-io/cypress/pull/27540).
- Dev Servers will now respect and use the `port` configuration option if present. Fixes [#27675](https://github.com/cypress-io/cypress/issues/27675).

**Dependency Updates:**

- Upgraded [`@cypress/request`](https://www.npmjs.com/package/@cypress/request) from `^2.88.11` to `^3.0.0` to address the [CVE-2023-28155](https://github.com/advisories/GHSA-p8p7-x288-28g6) security vulnerability. Addresses [#27535](https://github.com/cypress-io/cypress/issues/27535). Addressed in [#27495](https://github.com/cypress-io/cypress/pull/27495).

## 12.17.4

_Released 08/15/2023_

**Bugfixes:**

- Fixed an issue where having `cypress.config` in a nested directory would cause problems with locating the `component-index.html` file when using component testing. Fixes [#26400](https://github.com/cypress-io/cypress/issues/26400).

**Dependency Updates:**

- Upgraded [`webpack`](https://www.npmjs.com/package/webpack) from `v4` to `v5`. This means that we are now bundling your `e2e` tests with webpack 5. We don't anticipate this causing any noticeable changes. However, if you'd like to keep bundling your `e2e` tests with webpack 4 you can use the same process as before by pinning [@cypress/webpack-batteries-included-preprocessor](https://www.npmjs.com/package/@cypress/webpack-batteries-included-preprocessor) to `v2.x.x` and hooking into the [file:preprocessor](/api/node-events/preprocessors-api#Usage) plugin event. This will restore the previous bundling process. Additionally, if you're using [@cypress/webpack-batteries-included-preprocessor](https://www.npmjs.com/package/@cypress/webpack-batteries-included-preprocessor) already, a new version has been published to support webpack `v5`.
- Upgraded [`tough-cookie`](https://www.npmjs.com/package/tough-cookie) from `4.0` to `4.1.3`, [`@cypress/request`](https://www.npmjs.com/package/@cypress/request) from `2.88.11` to `2.88.12` and [`@cypress/request-promise`](https://www.npmjs.com/package/@cypress/request-promise) from `4.2.6` to `4.2.7` to address a [security vulnerability](https://security.snyk.io/vuln/SNYK-JS-TOUGHCOOKIE-5672873). Fixes [#27261](https://github.com/cypress-io/cypress/issues/27261).

## 12.17.3

_Released 08/01/2023_

**Bugfixes:**

- Fixed an issue where unexpected branch names were being recorded for cypress runs when executed by GitHub Actions. The `HEAD` branch name will now be recorded by default for pull request workflows if a branch name cannot otherwise be detected from user overrides or from local git data. Fixes [#27389](https://github.com/cypress-io/cypress/issues/27389).

**Performance:**

- Fixed an issue where unnecessary requests were being paused. No longer sends `X-Cypress-Is-XHR-Or-Fetch` header and infers resource type off of the server pre-request object. Fixes [#26620](https://github.com/cypress-io/cypress/issues/26620) and [#26622](https://github.com/cypress-io/cypress/issues/26622).

## 12.17.2

_Released 07/20/2023_

**Bugfixes:**

- Fixed an issue where commands would fail with the error `must only be invoked from the spec file or support file` if their arguments were mutated. Fixes [#27200](https://github.com/cypress-io/cypress/issues/27200).
- Fixed an issue where `cy.writeFile()` would erroneously fail with the error `cy.writeFile() must only be invoked from the spec file or support file`. Fixes [#27097](https://github.com/cypress-io/cypress/issues/27097).
- Fixed an issue where web workers could not be created within a spec. Fixes [#27298](https://github.com/cypress-io/cypress/issues/27298).

## 12.17.1

_Released 07/10/2023_

**Bugfixes:**

- Fixed invalid stored preference when enabling in-app notifications that could cause the application to crash. Fixes [#27228](https://github.com/cypress-io/cypress/issues/27228).
- Fixed an issue with the TypeScript types of [`cy.screenshot()`](/api/commands/screenshot). Fixed in [#27130](https://github.com/cypress-io/cypress/pull/27130).

**Dependency Updates:**

- Upgraded [`@cypress/request`](https://www.npmjs.com/package/@cypress/request) from `2.88.10` to `2.88.11` to address [CVE-2022-24999](https://www.cve.org/CVERecord?id=CVE-2022-24999) security vulnerability. Addressed in [#27005](https://github.com/cypress-io/cypress/pull/27005).

## 12.17.0

_Released 07/06/2023_

**Features:**

- Cypress Cloud users can now receive [desktop notifications](/cloud/features/recorded-runs#Notifications) about their runs, including when one starts, finishes, or fails. Addresses [#26686](https://github.com/cypress-io/cypress/issues/26686).

**Bugfixes:**

- Fixed issues where commands would fail with the error `must only be invoked from the spec file or support file`. Fixes [#27149](https://github.com/cypress-io/cypress/issues/27149) and [#27163](https://github.com/cypress-io/cypress/issues/27163).
- Fixed a regression introduced in Cypress [12.12.0](#12-12-0) where Cypress may fail to reconnect to the Chrome DevTools Protocol in Electron. Fixes [#26900](https://github.com/cypress-io/cypress/issues/26900).
- Fixed an issue where chrome was not recovering from browser crashes properly. Fixes [#24650](https://github.com/cypress-io/cypress/issues/24650).
- Fixed a race condition that was causing a GraphQL error to appear on the [Debug page](/cloud/features/recorded-runs#Debug) when viewing a running Cypress Cloud build. Fixed in [#27134](https://github.com/cypress-io/cypress/pull/27134).
- Fixed a race condition in electron where the test window exiting prematurely during the browser launch process was causing the whole test run to fail. Addressed in [#27167](https://github.com/cypress-io/cypress/pull/27167).
- Fixed minor issues with TypeScript types in the CLI. Fixes [#24110](https://github.com/cypress-io/cypress/issues/24110).
- Fixed an issue where a value for the Electron debug port would not be respected if defined using the `ELECTRON_EXTRA_LAUNCH_ARGS` environment variable. Fixes [#26711](https://github.com/cypress-io/cypress/issues/26711).

**Dependency Updates:**

- Update dependency `semver` to `^7.5.3`. Addressed in [#27151](https://github.com/cypress-io/cypress/pull/27151).

## 12.16.0

_Released 06/26/2023_

**Features:**

- Added support for Angular `16.1.0` in Cypress Component Testing. Addresses [#27049](https://github.com/cypress-io/cypress/issues/27049).

**Bugfixes:**

- Fixed an issue where certain commands would fail with the error `must only be invoked from the spec file or support file` when invoked with a large argument. Fixes [#27099](https://github.com/cypress-io/cypress/issues/27099).

## 12.15.0

_Released 06/20/2023_

**Features:**

- Added support for running Cypress tests with
  [Chrome's new `--headless=new` flag](https://developer.chrome.com/articles/new-headless/).
  Chrome versions 112 and above will now be run in the `headless` mode that
  matches the `headed` browser implementation. Addresses
  [#25972](https://github.com/cypress-io/cypress/issues/25972).
- Cypress can now test pages with targeted `Content-Security-Policy` and
  `Content-Security-Policy-Report-Only` header directives by specifying the
  allow list via the
  [`experimentalCspAllowList`](/app/references/experiments#Experimental-CSP-Allow-List)
  configuration option. Addresses
  [#1030](https://github.com/cypress-io/cypress/issues/1030). Addressed in
  [#26483](https://github.com/cypress-io/cypress/pull/26483)
- The [`videoCompression`](/app/references/configuration#Videos)
  configuration option now accepts both a boolean or a Constant Rate Factor
  (CRF) number between `1` and `51`. The `videoCompression` default value is
  still `32` CRF and when `videoCompression` is set to `true` the default of
  `32` CRF will be used. Addresses
  [#26658](https://github.com/cypress-io/cypress/issues/26658).
- The Cypress Cloud data shown on the
  [Specs](/app/core-concepts/open-mode#Specs) page and
  [Runs](/app/core-concepts/open-mode#Runs) page will now reflect Cloud
  Runs that match the current Git tree if Git is being used. Addresses
  [#26693](https://github.com/cypress-io/cypress/issues/26693).

**Bugfixes:**

- Fixed an issue where video output was not being logged to the console when
  `videoCompression` was turned off. Videos will now log to the terminal
  regardless of the compression value. Addresses
  [#25945](https://github.com/cypress-io/cypress/issues/25945).

**Dependency Updates:**

- Removed
  [`@cypress/mocha-teamcity-reporter`](https://www.npmjs.com/package/@cypress/mocha-teamcity-reporter)
  as this package was no longer being referenced. Addressed in
  [#26938](https://github.com/cypress-io/cypress/pull/26938).

## 12.14.0

_Released 06/07/2023_

**Features:**

- A new testing type switcher has been added to the Spec Explorer to make it
  easier to move between E2E and Component Testing. An informational overview of
  each type is displayed if it hasn't already been configured to help educate
  and onboard new users to each testing type. Addresses
  [#26448](https://github.com/cypress-io/cypress/issues/26448),
  [#26836](https://github.com/cypress-io/cypress/issues/26836) and
  [#26837](https://github.com/cypress-io/cypress/issues/26837).

**Bugfixes:**

- Fixed an issue to now correctly detect Angular 16 dependencies
  ([@angular/cli](https://www.npmjs.com/package/@angular/cli),
  [@angular-devkit/build-angular](https://www.npmjs.com/package/@angular-devkit/build-angular),
  [@angular/core](https://www.npmjs.com/package/@angular/core),
  [@angular/common](https://www.npmjs.com/package/@angular/common),
  [@angular/platform-browser-dynamic](https://www.npmjs.com/package/@angular/platform-browser-dynamic))
  during Component Testing onboarding. Addresses
  [#26852](https://github.com/cypress-io/cypress/issues/26852).
- Ensures Git-related messages on the
  [Runs page](/app/core-concepts/open-mode#Runs) remain dismissed.
  Addresses [#26808](https://github.com/cypress-io/cypress/issues/26808).

**Dependency Updates:**

- Upgraded [`find-process`](https://www.npmjs.com/package/find-process) from
  `1.4.1` to `1.4.7` to address this
  [Snyk](https://security.snyk.io/vuln/SNYK-JS-FINDPROCESS-1090284) security
  vulnerability. Addressed in
  [#26906](https://github.com/cypress-io/cypress/pull/26906).
- Upgraded [`firefox-profile`](https://www.npmjs.com/package/firefox-profile)
  from `4.0.0` to `4.3.2` to address security vulnerabilities within
  sub-dependencies. Addressed in
  [#26912](https://github.com/cypress-io/cypress/pull/26912).

## 12.13.0

_Released 05/23/2023_

**Features:**

- Adds Git-related messages for the
  [Runs page](/app/core-concepts/open-mode#Runs) and
  [Debug page](/cloud/features/recorded-runs#Debug) when users aren't using Git or
  there are no recorded runs for the current branch. Addresses
  [#26680](https://github.com/cypress-io/cypress/issues/26680).

**Bugfixes:**

- Reverted [#26452](https://github.com/cypress-io/cypress/pull/26452) which
  introduced a bug that prevents users from using End to End with Yarn 3. Fixed
  in [#26735](https://github.com/cypress-io/cypress/pull/26735). Fixes
  [#26676](https://github.com/cypress-io/cypress/issues/26676).
- Moved `types` condition to the front of `package.json#exports` since keys
  there are meant to be order-sensitive. Fixed in
  [#26630](https://github.com/cypress-io/cypress/pull/26630).
- Fixed an issue where newly-installed dependencies would not be detected during
  Component Testing setup. Addresses
  [#26685](https://github.com/cypress-io/cypress/issues/26685).
- Fixed a UI regression that was flashing an "empty" state inappropriately when
  loading the Debug page. Fixed in
  [#26761](https://github.com/cypress-io/cypress/pull/26761).
- Fixed an issue in Component Testing setup where TypeScript version 5 was not
  properly detected. Fixes
  [#26204](https://github.com/cypress-io/cypress/issues/26204).

**Misc:**

- Updated styling & content of Cypress Cloud slideshows when not logged in or no
  runs have been recorded. Addresses
  [#26181](https://github.com/cypress-io/cypress/issues/26181).
- Changed the nomenclature of 'processing' to 'compressing' when terminal video
  output is printed during a run. Addresses
  [#26657](https://github.com/cypress-io/cypress/issues/26657).
- Changed the nomenclature of 'Upload Results' to 'Uploading Screenshots &
  Videos' when terminal output is printed during a run. Addresses
  [#26759](https://github.com/cypress-io/cypress/issues/26759).

## 12.12.0

_Released 05/09/2023_

**Features:**

- Added a new informational banner to help get started with component testing
  from an existing end-to-end test suite. Addresses
  [#26511](https://github.com/cypress-io/cypress/issues/26511).

**Bugfixes:**

- Fixed an issue in Electron where devtools gets out of sync with the DOM
  occasionally. Addresses
  [#15932](https://github.com/cypress-io/cypress/issues/15932).
- Updated the Chromium renderer process crash message to be more terse.
  Addressed in [#26597](https://github.com/cypress-io/cypress/pull/26597).
- Fixed an issue with `CYPRESS_DOWNLOAD_PATH_TEMPLATE` regex to allow multiple
  replacements. Addresses
  [#23670](https://github.com/cypress-io/cypress/issues/23670).

**Dependency Updates:**

- Upgraded [`plist`](https://www.npmjs.com/package/plist) from `3.0.5` to
  `3.0.6` to address
  [CVE-2022-26260](https://nvd.nist.gov/vuln/detail/CVE-2022-22912#range-8131646)
  NVD security vulnerability. Addressed in
  [#26631](https://github.com/cypress-io/cypress/pull/26631).
- Upgraded [`engine.io`](https://www.npmjs.com/package/engine.io) from `6.2.1`
  to `6.4.2` to address
  [CVE-2023-31125](https://github.com/socketio/engine.io/security/advisories/GHSA-q9mw-68c2-j6m5)
  NVD security vulnerability. Addressed in
  [#26664](https://github.com/cypress-io/cypress/pull/26664).
- Upgraded [`@vue/test-utils`](https://www.npmjs.com/package/@vue/test-utils)
  from `2.0.2` to `2.3.2`. Addresses
  [#26575](https://github.com/cypress-io/cypress/issues/26575).

## 12.11.0

_Released 04/26/2023_

**Features:**

- Added Component Testing support for Angular 16. Addresses
  [#26044](https://github.com/cypress-io/cypress/issues/26044).
- The run navigation component on the
  [Debug page](/app/core-concepts/open-mode#Debug) will now display a warning
  message if there are more relevant runs than can be displayed in the list.
  Addresses [#26288](https://github.com/cypress-io/cypress/issues/26288).

**Bugfixes:**

- Fixed an issue where setting `videoCompression` to `0` would cause the video
  output to be broken. `0` is now treated as false. Addresses
  [#5191](https://github.com/cypress-io/cypress/issues/5191) and
  [#24595](https://github.com/cypress-io/cypress/issues/24595).
- Fixed an issue on the [Debug page](/app/core-concepts/open-mode#Debug) where the
  passing run status would appear even if the Cypress Cloud organization was
  over its monthly test result limit. Addresses
  [#26528](https://github.com/cypress-io/cypress/issues/26528).

**Misc:**

- Cleaned up our open telemetry dependencies, reducing the size of the open
  telemetry modules. Addressed in
  [#26522](https://github.com/cypress-io/cypress/pull/26522).

**Dependency Updates:**

- Upgraded [`vue`](https://www.npmjs.com/package/vue) from `3.2.31` to `3.2.47`.
  Addressed in [#26555](https://github.com/cypress-io/cypress/pull/26555).

## 12.10.0

_Released 04/17/2023_

**Features:**

- The Component Testing setup wizard will now show a warning message if an issue
  is encountered with an installed
  [third party framework definition](/app/component-testing/custom-frameworks).
  Addresses [#25838](https://github.com/cypress-io/cypress/issues/25838).

**Bugfixes:**

- Capture the [Azure](https://azure.microsoft.com/) CI provider's environment
  variable
  [`SYSTEM_PULLREQUEST_PULLREQUESTNUMBER`](https://learn.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml#system-variables-devops-services)
  to display the linked PR number in the Cloud. Addressed in
  [#26215](https://github.com/cypress-io/cypress/pull/26215).
- Fixed an issue in the onboarding wizard where project framework & bundler
  would not be auto-detected when opening directly into component testing mode
  using the `--component` CLI flag. Fixes
  [#22777](https://github.com/cypress-io/cypress/issues/22777) and
  [#26388](https://github.com/cypress-io/cypress/issues/26388).
- Updated to use the `SEMAPHORE_GIT_WORKING_BRANCH`
  [Semaphore](https://docs.semaphoreci.com) CI environment variable to correctly
  associate a Cloud run to the current branch. Previously this was incorrectly
  associating a run to the target branch. Fixes
  [#26309](https://github.com/cypress-io/cypress/issues/26309).
- Fix an edge case in Component Testing where a custom `baseUrl` in
  `tsconfig.json` for Next.js 13.2.0+ is not respected. This was partially fixed
  in [#26005](https://github.com/cypress-io/cypress/pull/26005), but an edge
  case was missed. Fixes
  [#25951](https://github.com/cypress-io/cypress/issues/25951).
- Correctly detect and resolve dependencies when configuring Component Testing
  in projects using Yarn's
  [Plug'n'Play feature](https://yarnpkg.com/features/pnp). Fixes
  [#25960](https://github.com/cypress-io/cypress/issues/25960).
- Fixed an issue where `click` events fired on
  [`.type('{enter}')`](/api/commands/type) did not propagate through shadow
  roots. Fixes [#26392](https://github.com/cypress-io/cypress/issues/26392).

**Misc:**

- Removed unintentional debug logs. Addressed in
  [#26411](https://github.com/cypress-io/cypress/pull/26411).
- Improved styling on the [Runs Page](/app/core-concepts/open-mode#Runs).
  Addresses [#26180](https://github.com/cypress-io/cypress/issues/26180).

**Dependency Updates:**

- Upgraded [`commander`](https://www.npmjs.com/package/commander) from `^5.1.0`
  to `^6.2.1`. Addressed in
  [#26226](https://github.com/cypress-io/cypress/pull/26226).
- Upgraded [`minimist`](https://www.npmjs.com/package/minimist) from `1.2.6` to
  `1.2.8` to address this
  [CVE-2021-44906](https://github.com/advisories/GHSA-xvch-5gv4-984h) NVD
  security vulnerability. Addressed in
  [#26254](https://github.com/cypress-io/cypress/pull/26254).

## 12.9.0

_Released 03/28/2023_

**Features:**

- The [Debug page](/cloud/features/recorded-runs#Debug) now allows for navigating
  between all runs recorded for a commit. Addresses
  [#25899](https://github.com/cypress-io/cypress/issues/25899) and
  [#26018](https://github.com/cypress-io/cypress/issues/26018).

**Bugfixes:**

- Fixed a compatibility issue so that component test projects can use
  [Vite](https://vitejs.dev/) version `4.2.0` and greater. Fixes
  [#26138](https://github.com/cypress-io/cypress/issues/26138).
- Fixed an issue where [`cy.intercept()`](/api/commands/intercept) added an
  additional `content-length` header to spied requests that did not set a
  `content-length` header on the original request. Fixes
  [#24407](https://github.com/cypress-io/cypress/issues/24407).
- Changed the way that Git hashes are loaded so that non-relevant runs are
  excluded from the Debug page. Fixes
  [#26058](https://github.com/cypress-io/cypress/issues/26058).
- Corrected the [`.type()`](/api/commands/type) command to account for shadow
  root elements when determining whether or not focus needs to be simulated
  before typing. Fixes
  [#26198](https://github.com/cypress-io/cypress/issues/26198).
- Fixed an issue where an incorrect working directory could be used for Git
  operations on Windows. Fixes
  [#23317](https://github.com/cypress-io/cypress/issues/23317).

**Misc:**

- Made some minor styling updates to the Debug page. Addresses
  [#26041](https://github.com/cypress-io/cypress/issues/26041).

## 12.8.1

_Released 03/15/2023_

**Bugfixes:**

- Fixed a regression in Cypress [10](#10-0-0) where
  the reporter auto-scroll configuration inside user preferences was
  unintentionally being toggled off. Users must now explicitly enable/disable
  auto-scroll under user preferences, which is enabled by default. Fixes
  [#24171](https://github.com/cypress-io/cypress/issues/24171) and
  [#26113](https://github.com/cypress-io/cypress/issues/26113).

**Dependency Updates:**

- Upgraded [`ejs`](https://www.npmjs.com/package/ejs) from `3.1.6` to `3.1.8` to
  address this
  [CVE-2022-29078](https://github.com/advisories/GHSA-phwq-j96m-2c2q) NVD
  security vulnerability. Addressed in
  [#25279](https://github.com/cypress-io/cypress/pull/25279).

## 12.8.0

_Released 03/14/2023_

**Features:**

- The [Debug page](/cloud/features/recorded-runs#Debug) is now able to show
  real-time results from in-progress runs. Addresses
  [#25759](https://github.com/cypress-io/cypress/issues/25759).
- Added the ability to control whether a request is logged to the command log
  via [`cy.intercept()`](/api/commands/intercept) by passing `log: false` or
  `log: true`. Addresses
  [#7362](https://github.com/cypress-io/cypress/issues/7362).
  - This can be used to override Cypress's default behavior of logging all XHRs
    and fetches, see the
    [example](/api/commands/intercept#Disabling-logs-for-a-request).
- It is now possible to control the number of connection attempts to the browser
  using the `CYPRESS_CONNECT_RETRY_THRESHOLD` Environment Variable. Learn more
  [here](/app/references/advanced-installation#Environment-variables).
  Addressed in [#25848](https://github.com/cypress-io/cypress/pull/25848).

**Bugfixes:**

- Fixed an issue where using `Cypress.require()` would throw the error
  `Cannot find module 'typescript'`. Fixes
  [#25885](https://github.com/cypress-io/cypress/issues/25885).
- The [`before:spec`](/api/node-events/before-spec-api) API was updated to correctly
  support async event handlers in `run` mode. Fixes
  [#24403](https://github.com/cypress-io/cypress/issues/24403).
- Updated the Component Testing
  [community framework](/app/component-testing/custom-frameworks)
  definition detection logic to take into account monorepo structures that hoist
  dependencies. Fixes
  [#25993](https://github.com/cypress-io/cypress/issues/25993).
- The onboarding wizard for Component Testing will now detect installed
  dependencies more reliably. Fixes
  [#25782](https://github.com/cypress-io/cypress/issues/25782).
- Fixed an issue where Angular components would sometimes be mounted in
  unexpected DOM locations in component tests. Fixes
  [#25956](https://github.com/cypress-io/cypress/issues/25956).
- Fixed an issue where Cypress component testing would fail to work with
  [Next.js](https://nextjs.org/) `13.2.1`. Fixes
  [#25951](https://github.com/cypress-io/cypress/issues/25951).
- Fixed an issue where migrating a project from a version of Cypress earlier
  than [10.0.0](#10-0-0) could fail if the project's `testFiles` configuration
  was an array of globs. Fixes
  [#25947](https://github.com/cypress-io/cypress/issues/25947).

**Misc:**

- Removed "New" badge in the navigation bar for the debug page icon. Addresses
  [#25925](https://github.com/cypress-io/cypress/issues/25925).
- Removed inline "Connect" buttons within the Specs Explorer. Addresses
  [#25926](https://github.com/cypress-io/cypress/issues/25926).
- Added an icon for "beta" versions of the Chrome browser. Addresses
  [#25968](https://github.com/cypress-io/cypress/issues/25968).

**Dependency Updates:**

- Upgraded
  [`mocha-junit-reporter`](https://github.com/michaelleeallen/mocha-junit-reporter)
  from `2.1.0` to `2.2.0` to be able to use
  [new placeholders](https://github.com/michaelleeallen/mocha-junit-reporter/pull/163)
  such as `[suiteFilename]` or `[suiteName]` when defining the test report name.
  Addressed in [#25922](https://github.com/cypress-io/cypress/pull/25922).

## 12.7.0

_Released 02/24/2023_

**Features:**

- It is now possible to set `hostOnly` cookies with
  [`cy.setCookie()`](/api/commands/setcookie) for a given domain. Addresses
  [#16856](https://github.com/cypress-io/cypress/issues/16856) and
  [#17527](https://github.com/cypress-io/cypress/issues/17527).
- Added a Public API for third party component libraries to define a Framework
  Definition, embedding their library into the Cypress onboarding workflow.
  Learn more [here](/app/component-testing/custom-frameworks).
  Implemented in [#25780](https://github.com/cypress-io/cypress/pull/25780) and
  closes [#25638](https://github.com/cypress-io/cypress/issues/25638).
- Added a Debug Page tutorial slideshow for projects that are not connected to
  Cypress Cloud. Addresses
  [#25768](https://github.com/cypress-io/cypress/issues/25768).
- Updated the "new" status badge for the Debug page navigation link to be less
  noticeable when the navigation is collapsed. Addresses
  [#25739](https://github.com/cypress-io/cypress/issues/25739).
- Improved various error message around interactions with the Cypress Cloud.
  Implemented in [#25837](https://github.com/cypress-io/cypress/pull/25837).

**Bugfixes:**

- Fixed an issue where cookies were being duplicated with the same hostname, but
  a prepended dot. Fixed an issue where cookies may not be expiring correctly.
  Fixes [#25174](https://github.com/cypress-io/cypress/issues/25174),
  [#25205](https://github.com/cypress-io/cypress/issues/25205) and
  [#25495](https://github.com/cypress-io/cypress/issues/25495).
- Fixed an issue where cookies weren't being synced when the application was
  stable. Fixed in [#25855](https://github.com/cypress-io/cypress/pull/25855).
  Fixes [#25835](https://github.com/cypress-io/cypress/issues/25835).
- Added missing TypeScript type definitions for the
  [`cy.reload()`](/api/commands/reload) command. Addressed in
  [#25779](https://github.com/cypress-io/cypress/pull/25779).
- Ensure Angular components are mounted inside the correct element. Fixes
  [#24385](https://github.com/cypress-io/cypress/issues/24385).
- Fix a bug where files outside the project root in a monorepo are not correctly
  served when using Vite. Addressed in
  [#25801](https://github.com/cypress-io/cypress/pull/25801).
- Fixed an issue where using [`cy.intercept`](/api/commands/intercept)'s
  `req.continue()` with a non-function parameter would not provide an
  appropriate error message. Fixed in
  [#25884](https://github.com/cypress-io/cypress/pull/25884).
- Fixed an issue where Cypress would erroneously launch and connect to multiple
  browser instances. Fixes
  [#24377](https://github.com/cypress-io/cypress/issues/24377).
- Fixed various bugs when recording to the cloud. Fixed in
  [#25837](https://github.com/cypress-io/cypress/pull/25837).

**Misc:**

- Made updates to the way that the Debug Page header displays information.
  Addresses [#25796](https://github.com/cypress-io/cypress/issues/25796) and
  [#25798](https://github.com/cypress-io/cypress/issues/25798).

## 12.6.0

_Released 02/15/2023_

**Features:**

- Added a new CLI flag, called
  [`--auto-cancel-after-failures`](/app/references/command-line#Options), that
  overrides the project-level
  ["Auto Cancellation"](/cloud/features/smart-orchestration/run-cancellation)
  value when recording to the Cloud. This gives Cloud users on Business and
  Enterprise plans the flexibility to alter the auto-cancellation value per run.
  Addressed in [#25237](https://github.com/cypress-io/cypress/pull/25237).
- It is now possible to overwrite query commands using
  [`Cypress.Commands.overwriteQuery`](/api/cypress-api/custom-queries).
  Addressed in [#25078](https://github.com/cypress-io/cypress/issues/25078).
- Added [`Cypress.require()`](/api/cypress-api/require) for including
  dependencies within the [`cy.origin()`](/api/commands/origin) callback. This
  change removed support for using `require()` and `import()` directly within
  the callback because we found that it impacted performance not only for spec
  files using them within the [`cy.origin()`](/api/commands/origin) callback,
  but even for spec files that did not use them. Addresses
  [#24976](https://github.com/cypress-io/cypress/issues/24976).
- Added the ability to open the failing test in the IDE from the Debug page
  before needing to re-run the test. Addressed in
  [#24850](https://github.com/cypress-io/cypress/issues/24850).

**Bugfixes:**

- When a Cloud user is a part of multiple Cloud organizations, the
  [Connect to Cloud setup](/cloud/get-started/setup#Set-up-a-project-to-record)
  now shows the correct organizational prompts when connecting a new project.
  Fixes [#25520](https://github.com/cypress-io/cypress/issues/25520).
- Fixed an issue where Cypress would fail to load any specs if the project
  `specPattern` included a resource that could not be accessed due to filesystem
  permissions. Fixes
  [#24109](https://github.com/cypress-io/cypress/issues/24109).
- Fixed an issue where the Debug page would display a different number of specs
  for in-progress runs than the in-progress specs reported in Cypress Cloud.
  Fixes [#25647](https://github.com/cypress-io/cypress/issues/25647).
- Fixed an issue in middleware where error-handling code could itself generate
  an error and fail to report the original issue. Fixes
  [#22825](https://github.com/cypress-io/cypress/issues/22825).
- Fixed an regression introduced in Cypress [12.3.0](#12-3-0) where custom
  browsers that relied on process environment variables were not found on macOS
  arm64 architectures. Fixed in
  [#25753](https://github.com/cypress-io/cypress/pull/25753).

**Misc:**

- Improved the UI of the Debug page. Addresses
  [#25664](https://github.com/cypress-io/cypress/issues/25664),
  [#25669](https://github.com/cypress-io/cypress/issues/25669),
  [#25665](https://github.com/cypress-io/cypress/issues/25665),
  [#25666](https://github.com/cypress-io/cypress/issues/25666), and
  [#25667](https://github.com/cypress-io/cypress/issues/25667).
- Updated the Debug page sidebar badge to to show 0 to 99+ failing tests,
  increased from showing 0 to 9+ failing tests, to provide better test failure
  insights. Addresses
  [#25662](https://github.com/cypress-io/cypress/issues/25662).

**Dependency Updates:**

- Upgrade [`debug`](https://www.npmjs.com/package/debug) to `4.3.4`. Addressed
  in [#25699](https://github.com/cypress-io/cypress/pull/25699).

## 12.5.1

_Released 02/02/2023_

**Bugfixes:**

- Fixed a regression introduced in Cypress [12.5.0](#12-5-0) where the
  `runnable` was not included in the
  [`test:after:run`](/api/cypress-api/catalog-of-events) event. Fixes
  [#25663](https://github.com/cypress-io/cypress/issues/25663).

**Dependency Updates:**

- Upgraded [`simple-git`](https://github.com/steveukx/git-js) from `3.15.0` to
  `3.16.0` to address this
  [security vulnerability](https://github.com/advisories/GHSA-9p95-fxvg-qgq2)
  where Remote Code Execution (RCE) via the clone(), pull(), push() and
  listRemote() methods due to improper input sanitization was possible.
  Addressed in [#25603](https://github.com/cypress-io/cypress/pull/25603).

## 12.5.0

_Released 01/31/2023_

**Features:**

- Easily debug failed CI test runs recorded to the Cypress Cloud from your local
  Cypress app with the new Debug page. Please leave any feedback
  [here](https://github.com/cypress-io/cypress/discussions/25649). Your feedback
  will help us make decisions to improve the Debug experience. For more details,
  see [our blog post](https://on.cypress.io/debug-page-release). Addressed in
  [#25488](https://github.com/cypress-io/cypress/pull/25488).

**Performance:**

- Improved memory consumption in `run` mode by removing reporter logs for
  successful tests. Fixes
  [#25230](https://github.com/cypress-io/cypress/issues/25230).

**Bugfixes:**

- Fixed an issue where alternative Microsoft Edge Beta, Canary, and Dev binary
  versions were not being discovered by Cypress. Fixes
  [#25455](https://github.com/cypress-io/cypress/issues/25455).

**Dependency Updates:**

- Upgraded
  [`underscore.string`](https://github.com/esamattis/underscore.string/blob/HEAD/CHANGELOG.markdown)
  from `3.3.5` to `3.3.6` to reference rebuilt assets after security patch to
  fix regular expression DDOS exploit. Addressed in
  [#25574](https://github.com/cypress-io/cypress/pull/25574).

## 12.4.1

_Released 01/27/2023_

**Bugfixes:**

- Fixed a regression from Cypress [12.4.0](#12-4-0) where Cypress was not
  exiting properly when running multiple Component Testing specs in `electron`
  in `run` mode. Fixes
  [#25568](https://github.com/cypress-io/cypress/issues/25568).

**Dependency Updates:**

- Upgraded [`ua-parser-js`](https://github.com/faisalman/ua-parser-js) from
  `0.7.24` to `0.7.33` to address this
  [security vulnerability](https://github.com/faisalman/ua-parser-js/security/advisories/GHSA-fhg7-m89q-25r3)
  where crafting a very-very-long user-agent string with specific pattern, an
  attacker can turn the script to get stuck processing for a very long time
  which results in a denial of service (DoS) condition. Addressed in
  [#25561](https://github.com/cypress-io/cypress/pull/25561).

## 12.4.0

_Released 01/24/2023_

**Features:**

- Added official support for Vite 4 in component testing. Addresses
  [#24969](https://github.com/cypress-io/cypress/issues/24969).
- Added new
  [`experimentalMemoryManagement`](/app/references/experiments#Configuration)
  configuration option to improve memory management in Chromium-based browsers.
  Enable this option with `experimentalMemoryManagement=true` if you have
  experienced "Out of Memory" issues. Please leave any feedback around
  `experimentalMemoryManagement`
  [here](https://github.com/cypress-io/cypress/discussions/25557). Your feedback
  will help us make decisions to improve memory issues. Addresses
  [#23391](https://github.com/cypress-io/cypress/issues/23391).
- Added new
  `experimentalSkipDomainInjection`
  configuration option to disable Cypress from setting `document.domain` on
  injection, allowing users to test Salesforce domains. If you believe you are
  having `document.domain` issues, please see the
  `experimentalSkipDomainInjection`
  guide. This config option is end-to-end only. Addresses
  [#2367](https://github.com/cypress-io/cypress/issues/2367),
  [#23958](https://github.com/cypress-io/cypress/issues/23958),
  [#24290](https://github.com/cypress-io/cypress/issues/24290), and
  [#24418](https://github.com/cypress-io/cypress/issues/24418).
- The [`.as`](/api/commands/as) command now accepts an options argument,
  allowing an alias to be stored as type "query" or "static" value. This is
  stored as "query" by default. Addresses
  [#25173](https://github.com/cypress-io/cypress/issues/25173).
- The `cy.log()` command will now display a line break where the `\n` character
  is used. Addresses
  [#24964](https://github.com/cypress-io/cypress/issues/24964).
- [`component.specPattern`](/app/references/configuration#component) now
  utilizes a JSX/TSX file extension when generating a new empty spec file if
  project contains at least one file with those extensions. This applies only to
  component testing and is skipped if
  [`component.specPattern`](/app/references/configuration#component) has been
  configured to exclude files with those extensions. Addresses
  [#24495](https://github.com/cypress-io/cypress/issues/24495).
- Added support for the `data-qa` selector in the
  Selector Playground in addition to
  `data-cy`, `data-test` and `data-testid`. Addresses
  [#25305](https://github.com/cypress-io/cypress/issues/25305).

**Bugfixes:**

- Fixed an issue where component tests could incorrectly treat new major
  versions of certain dependencies as supported. Fixes
  [#25379](https://github.com/cypress-io/cypress/issues/25379).
- Fixed an issue where new lines or spaces on new lines in the Command Log were
  not maintained. Fixes
  [#23679](https://github.com/cypress-io/cypress/issues/23679) and
  [#24964](https://github.com/cypress-io/cypress/issues/24964).
- Fixed an issue where Angular component testing projects would fail to
  initialize if an unsupported browserslist entry was specified in the project
  configuration. Fixes
  [#25312](https://github.com/cypress-io/cypress/issues/25312).

**Misc**

- Video output link in `cypress run` mode has been added to its own line to
  make the video output link more easily clickable in the terminal. Addresses
  [#23913](https://github.com/cypress-io/cypress/issues/23913).

## 12.3.0

_Released 01/03/2023_

**Features:**

- Added support for mapping the `CYPRESS_PULL_REQUEST_ID`,
  `CYPRESS_PULL_REQUEST_URL`, and/or `CYPRESS_CI_BUILD_URL` environment
  variables to the corresponding Cloud run. This provides workarounds when
  supported CI provider mappings are incorrect or unsupported CI providers are
  used. Addressed in [#25036](https://github.com/cypress-io/cypress/pull/25036).
- Added new Cypress API,
  [`Cypress.currentRetry`](/api/cypress-api/currentretry), to easily access the
  current test retry count. Addresses
  [#25239](https://github.com/cypress-io/cypress/pull/25239).

**Performance:**

- Increased the pre-request proxy cleanup interval. The previous cleanup
  interval was too aggressive for projects loading a large number of JS modules,
  causing applications to load very slowly and in chunks. Fixed in
  [#25209](https://github.com/cypress-io/cypress/pull/25209).
- Fixed an issue where browsers distributed as universal binaries (Chrome,
  Firefox) on M1 Macs could be launched in the wrong architecture, resulting in
  poor performance in-browser. Fixed in
  [#25014](https://github.com/cypress-io/cypress/pull/25014).
- Resolved a delay that could occur on startup when using a custom Cypress
  configuration file location in projects with a transitive `typescript`
  dependency. Fixes
  [#24781](https://github.com/cypress-io/cypress/issues/24781).

**Bugfixes:**

- Fixes an issue where component test files that contained characters, such as
  brackets (`[]`), would be ignored when running tests. This is a common pattern
  in Next.js and Gatsby.js projects. Fixes
  [#24588](https://github.com/cypress-io/cypress/issues/24588).
- Updated the Jenkins environment variable mappings so pull request data is
  correctly linked to the corresponding Cloud run. Fixed in
  [#25036](https://github.com/cypress-io/cypress/pull/25036).
- Fixed a regression in [10.11.0](#10-11-0) where the mocha test results no
  longer sent the pending boolean to reporters. This caused the
  [`mochawesome`](https://www.npmjs.com/package/mochawesome) reporter to
  incorrectly report pending tests as pending and skipped. Fixes
  [#24477](https://github.com/cypress-io/cypress/issues/24477).
- Fix for regression introduced in [12.1.0](#12-1-0), where
  [`.contains()`](/api/commands/contains) could return multiple elements instead
  of one element when it was matching directly on the subject, rather than on
  the subject's children. Fixes
  [#25225](https://github.com/cypress-io/cypress/issues/25225).
- Fixed a small visual bug in the Test Runner such that Chrome users will no
  longer see a white border on the nav bar at the specific zoom levels. Fixes
  [#25284](https://github.com/cypress-io/cypress/issues/25284).

**Misc**

- Remove the redundant `Need help` link from the migration information modal
  because the modal provides in-depth details for users already. Addresses
  [#21923](https://github.com/cypress-io/cypress/issues/21923).
- Minor UI updates were make to truncate the browser's name when it exceeds the
  allocated space and to only show the browsers's major version in the UI.
  Addresses [#21730](https://github.com/cypress-io/cypress/issues/21730) and
  [#21755](https://github.com/cypress-io/cypress/issues/21755).
- Removed the line break that was displayed on the Settings page when a
  configuration value was an empty object. Addresses
  [#21790](https://github.com/cypress-io/cypress/issues/21790).

**Dependency Updates:**

- Upgraded [`engine.io`](https://www.npmjs.com/package/engine.io) from `5.2.1`
  to `6.2.1` to address this
  [security vulnerability](https://github.com/socketio/engine.io/security/advisories/GHSA-r7qp-cfhv-p84w)
  where a specially crafted HTTP request can trigger an uncaught exception on
  the Engine.IO server, thus killing the Node.js process. Addressed in
  [#23843](https://github.com/cypress-io/cypress/issues/23843).
- Upgraded [`express`](https://www.npmjs.com/package/express) from `4.17.1` to
  `4.17.3` to address this
  [NVD security vulnerability](https://nvd.nist.gov/vuln/detail/CVE-2022-24999).
  Addressed in [#23843](https://github.com/cypress-io/cypress/issues/23843).
- Upgraded [`simple-git`](https://www.npmjs.com/package/simple-git) from `3.4.0`
  to `3.15.0` to address this
  [NVD security vulnerability](https://nvd.nist.gov/vuln/detail/CVE-2022-25912).
  Addressed in [#23843](https://github.com/cypress-io/cypress/issues/23843).

## 12.2.0

_Released 12/20/2022_

**Features:**

- Added the ability to match on `resourceType` with
  [`cy.intercept()`](/api/commands/intercept), and to see the resource type of
  an intercepted request as `req.resourceType`. Addresses
  [#14525](https://github.com/cypress-io/cypress/issues/14525).
- Users working in React Component Testing projects can now generate a basic
  spec file from the components that exist in their project. Addresses
  [#24008](https://github.com/cypress-io/cypress/issues/24008).

**Performance:**

- Fixed a regression introduced in the Electron browser in
  [Cypress 10.8.0](#10-8-0) where the `CYPRESS_EVERY_NTH_FRAME` environment
  variable was not being set appropriately causing all frames to be captured
  which slowed down tests. Fixes
  [#23830](https://github.com/cypress-io/cypress/issues/23830).

**Bugfixes:**

- Fixed an issue where the `query` object was not available on requests from
  [`cy.intercept()`](/api/commands/intercept) once they were yielded. Fixes
  [#25088](https://github.com/cypress-io/cypress/issues/25088).
- Fixed an issue with Angular Component Testing where urls within SASS/SCSS
  files were not being correctly resolved which could result in incomplete
  styling. Fixes [#24272](https://github.com/cypress-io/cypress/issues/24272).
- Fixed a regression introduced in [Cypress 12](#12-0-0) where
  [`cy.get()`](/api/commands/get) would ignore a `null` value for the
  `withinSubject` option. Fixes
  [#25104](https://github.com/cypress-io/cypress/issues/25104).
- Fixed an issue where an unhandled promise rejection would display an
  incomplete error message in the command log. Fixes
  [#24915](https://github.com/cypress-io/cypress/issues/24915).
- Fixed an issue where the incorrect Cypress version could be shown in the
  migration wizard. Fixes
  [#25138](https://github.com/cypress-io/cypress/issues/25138).
- Fixed an issue where the Cypress migration wizard would fail to run in
  [global mode](/app/references/command-line#cypress-open-global) on newer
  versions of Cypress. Addressed in
  [#25138](https://github.com/cypress-io/cypress/issues/25138).
- Fixed an issue with Angular Component Testing where a custom
  [`sourceRoot`](https://angular.io/guide/workspace-config#project-configuration-options)
  configuration would not be respected. Fixes
  [#24827](https://github.com/cypress-io/cypress/issues/24827).
- Fixed TypeScript typings for [`cy.nextUntil()`](/api/commands/nextuntil) to
  include the `filter` parameter. Fixes
  [#24772](https://github.com/cypress-io/cypress/issues/24772).

## 12.1.0

_Released 12/12/2022_

**Features:**

- Added [`cy.getAllCookies()`](/api/commands/getallcookies) and
  [`cy.clearAllCookies()`](/api/commands/clearallcookies), which get and clear
  cookies for all browser cookies across any domains. Addresses
  [#24265](https://github.com/cypress-io/cypress/issues/24265),
  [#8956](https://github.com/cypress-io/cypress/issues/8956), and
  [#408](https://github.com/cypress-io/cypress/issues/408).
- Updated the error messaging to provide more context when parallel group
  parameters are mismatched when sent to the Cypress Cloud. Fixes
  [#24734](https://github.com/cypress-io/cypress/issues/24734).

**Bugfixes:**

- Fixed an issue with the `cy.session` command where it now recollects the
  session data after validation is successful to correctly store the full
  browser context before the command ends. Addressed with
  [#25112](https://github.com/cypress-io/cypress/pull/25112).
- Fixed an issue where recent versions of Firefox in headless mode would behave
  inconsistently with headed. Fixes
  [#24900](https://github.com/cypress-io/cypress/issues/24900).
- Fixed an issue where [`.select(index)`](/api/commands/select#Index) would fail
  when multiple `<option>` elements have the same value property. Fixes
  [#24739](https://github.com/cypress-io/cypress/issues/24739).
- Cleaned up temp files generated by `cypress run`. Addressed by
  [#24957](https://github.com/cypress-io/cypress/pull/24957)
- The Chrome web security configuration tooltip will now be shown only if
  [`chromeWebSecurity`](/app/guides/cross-origin-testing#Disabling-Web-Security) is
  set to false when using a non-chromium browser. Fixes
  [#23846](https://github.com/cypress-io/cypress/issues/23846).
- Fixed an issue where updating a component would not trigger the `supportFile`
  to reload imported stylesheets. This is fixed by doing a full reload for Vite,
  to ensure the spec re-runs correctly with the latest styles. Fixes
  [#24874](https://github.com/cypress-io/cypress/issues/24874).
- The
  [Run All Specs experiment](/app/references/experiments#End-to-End-Testing)
  will now open in a new tab rather than close and reopen the browser. This will
  make the run faster and help mitigate
  [#21743](https://github.com/cypress-io/cypress/issues/21743). Fixes
  [#24919](https://github.com/cypress-io/cypress/issues/24919).

## 12.0.2

_Released 12/08/2022_

**Bugfixes:**

- Fixed a regression in [12.0.0](#12-0-0) where
  [`.contains()`](/api/commands/contains) received multiple elements as a
  subject, it only searched inside the first one. Fixes
  [#25025](https://github.com/cypress-io/cypress/issues/25025)
- Fixed a regression in [12.0.0](#12-0-0) around
  [`.contains()`](/api/commands/contains) where if the subject was a `<form>`
  element, it would only consider the first `<input>` element in the form,
  rather than every child. Fixes
  [#25019](https://github.com/cypress-io/cypress/issues/25019)

## 12.0.1

_Released 12/06/2022_

**Bugfixes:**

- Fixed a regression in [11.2.0](#11-2-0) where a stale spec search pattern was
  shown in the spec search bar after re-launching Cypress. Fixes
  [#24936](https://github.com/cypress-io/cypress/issues/24936)
- Fixed a regression in [12.0.0](#12-0-0) where tests scaffolded into new
  projects were using a removed api. Fixed in
  [#25006](https://github.com/cypress-io/cypress/pull/25006)
- Fixed regression in [12.0.0](#12-0-0) where setting `e2e.testIsolation=false`
  caused invalid configuration validation when running
  `cypress run --component`. Fixes
  [#25007](https://github.com/cypress-io/cypress/issues/25007)
- Fixed a regression introduced in [12.0.0](#12-0-0) that sometimes does not
  allow cy.origin() to communicate correctly with the navigated to domain. Fixes
  [#25010](https://github.com/cypress-io/cypress/issues/25010)

## 12.0.0

_Released 12/06/2022_

**Summary:**

The Session and Origin Experiment is now generally available for end-to-end
testing. This means Cypress now fully supports:

- Testing multiple origins in a single test with the new
  [`cy.origin()`](/api/commands/origin) command.
- Caching and restoring cookies,
  [`localStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage),
  and
  [`sessionStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage)
  between tests
- Configuring
  [`testIsolation`](/app/core-concepts/writing-and-organizing-tests#Test-Isolation)
  in suites to define whether or not the browser context is cleaned or persisted
  between tests

Additionally in this release, enhancements were made to how Cypress manages DOM
element resolution to reduce the likelihood of hitting detached DOM errors due
to maintaining stale DOM references. We've updated our
[Retry-ability Guide](/app/core-concepts/retry-ability) with all the details
if you'd like to learn more.

Read more about 12.0 in
[our blog post](https://on.cypress.io/cypress-12-release).

**Breaking Changes:**

- Cypress dropped support for Node.js 12, 15 and 17. Those versions have reached
  end-of-life. Installing Cypress on your system now requires Node.js 14, 16 or
  18+. Addressed in [#24885](https://github.com/cypress-io/cypress/pull/24885).
- Cypress has always recommended writing tests in a clean context. In Cypress
  12, we enforce running tests in a clean browser context through
  [test isolation](/app/core-concepts/writing-and-organizing-tests#Test-Isolation).
  This option is configurable, but is enabled by default. Whether enabled or
  disabled, this changes how Cypress cleans up the browser context before each
  test and you may experience test errors with this upgrade. To better
  understand the full impact of this change, please review the
  [migration guide](/app/references/migration-guide#Test-Isolation).
  - In Cypress v12, the `testIsolation` configuration values have changed from
    `on` or `off` to `true` or `false`. Addressed in
    [#24935](https://github.com/cypress-io/cypress/pull/24935).
- The `experimentalSessionAndOrigin` configuration option has been removed and
  all functionality associated with this experiment is now enabled by default,
  with the exception of using `require` and `import` with callback supplied to
  the [`cy.origin()`](/api/commands/origin) command. To leverage external
  dependencies in `cy.origin()` callbacks, set the new
  [`e2e.experimentalOriginDependencies`](/app/references/experiments#End-to-End-Testing)
  configuration option to `true`. Addresses
  [#21471](https://github.com/cypress-io/cypress/issues/21471).
- The `Cookies.defaults` and `Cookies.preserveOnce` APIs have been removed. Use
  the new [`cy.session()`](/api/commands/session) command to preserve cookies
  between tests. Addresses
  [#21472](https://github.com/cypress-io/cypress/issues/21472).
- The `cy.server()` and `cy.route()` commands have been removed. Additionally,
  the corresponding `Cypress.Server.defaults` API has also been removed. Use the
  [`cy.intercept()`(/api/commands/intercept) command to stub network responses
  and requests. Addresses
  [#22126](https://github.com/cypress-io/cypress/issues/22126).
- The Cookie commands now uses the `hostname` as the domain by default instead
  of the `superdomain`. This change aligns Cypress' cookie rules with the
  browser cookie rules. This may affect what cookies are returned by
  [`cy.getCookie()`](/api/commands/getcookie), what cookies are set with
  [`cy.setCookie()`](/api/commands/setcookie), and the cookies cleared with
  [`cy.clearCookies()`](/api/commands/clearcookies). Addresses
  [#363](https://github.com/cypress-io/cypress/issues/363),
  [#5723](https://github.com/cypress-io/cypress/issues/5723) and
  [#24526](https://github.com/cypress-io/cypress/issues/24526).
- The [`.within()`](/api/commands/within) command now requires a single subject
  and throws an error if given more than one subject. This change adds
  consistency around how `.within()` behaves across commands. Previously some
  commands inside a `.within()` callback would silently select the first
  element, while others would use all of the previously yielded subjects, and
  others would throw an error. Addressed in
  [#24975](https://github.com/cypress-io/cypress/pull/24975).
- Cypress now throws an error if any Cypress commands are invoked from inside a
  [`.should()`](/api/commands/should) callback. This previously resulted in
  unusual and undefined behavior. Addresses
  [#5963](https://github.com/cypress-io/cypress/issues/5963),
  [#14656](https://github.com/cypress-io/cypress/issues/14656) and
  [#22587](https://github.com/cypress-io/cypress/issues/22587).
- The [`.invoke()`](/api/commands/invoke) command now throws an error if the
  invoked function returns a promise. If you wish to call a method that returns
  a promise and wait for it to resolve, use [`.then()`](/api/commands/then)
  instead of `.invoke()`. Addressed in
  [#24417](https://github.com/cypress-io/cypress/pull/24417).
- The [`cy.request()`](/api/commands/request) command now uses
  [`querystringify`](https://www.npmjs.com/package/querystringify) to stringify
  & parse the `qs` options. This change aligns with how the
  [`cy.visit()`](/api/commands/visit) command generates urls with query
  parameters. Addressed in
  [#20302](https://github.com/cypress-io/cypress/pull/20302).

**Features:**

- Added a new configuration option called `testIsolation`, which defaults to
  `true`. This option can be set at the `e2e` or suite-level to determine
  whether or not
  [test isolation](/app/core-concepts/writing-and-organizing-tests#Test-Isolation)
  is enabled to ensure a clean browser context between tests. Addressed in
  [#22230](https://github.com/cypress-io/cypress/pull/22230).
- The previously experimental Cypress command,
  [`cy.origin()`](/api/commands/origin), is now generally available in
  end-to-end testing. This command allows testing multiple origins in a single
  test. Addresses [#17336](https://github.com/cypress-io/cypress/issues/17336).
- The previously experimental Cypress command,
  [`cy.session()`](/api/commands/session), is now generally available. This
  command caches and restores `cookies`,
  [`localStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage),
  and
  [`sessionStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage)
  in order to recreate a consistent browser context between tests. Addresses
  [#20977](https://github.com/cypress-io/cypress/issues/20977).
- Added a new Cypress command,
  [`cy.getAllLocalStorage()`](/api/commands/getalllocalstorage), to get
  [`localStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage)
  data for all origins with which the test has interacted. Addresses
  [#24276](https://github.com/cypress-io/cypress/issues/24276).
- Added a new Cypress command,
  [`cy.clearAllLocalStorage()`](/api/commands/clearalllocalstorage), to clear
  [`localStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage)
  data for all origins with which the test has interacted. Addresses
  [#24276](https://github.com/cypress-io/cypress/issues/24276).
- Added a new Cypress command,
  [`cy.getAllSessionStorage()`](/api/commands/getallsessionstorage), to get
  [`sessionStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage)
  data for all origins with which the test has interacted. Addresses
  [#24276](https://github.com/cypress-io/cypress/issues/24276).
- Added a new Cypress command,
  [`cy.clearAllSessionStorage()`](/api/commands/clearallsessionstorage), to
  clear
  [`sessionStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage)
  data for all origins with which the test has interacted. Addresses
  [#24276](https://github.com/cypress-io/cypress/issues/24276).
- Added a new configuration option called
  [`experimentalOriginDependencies`](/app/references/experiments#End-to-End-Testing),
  which defaults to `false`. This option enables support for `require` and
  `import` within the callback supplied to the
  [`cy.origin()`](/api/commands/origin) command in end-to-end testing.
  Previously this feature was enabled through the `experimentalSessionAndOrigin`
  configuration option. `experimentalOriginDependencies` was added as a
  configuration option in Cypress 12, instead of being enabled by default, due
  to increased Node.js memory usage associated with this option that needs to be
  addressed before making this behavior generally available. See issue
  [#24976](https://github.com/cypress-io/cypress/issues/24976) for more
  information. Addressed in
  [#24931](https://github.com/cypress-io/cypress/pull/24931).
- Added a new `Cypress.ensure` API which provides several methods that can be
  helpful when writing customs commands. Addressed in
  [#24697](https://github.com/cypress-io/cypress/pull/24697).
- Added a new "Run All" button to the
  [`experimentalRunAllSpecs`](/app/references/experiments#End-to-End-Testing)
  experiment which enables running all spec files returned from the
  `specPattern` glob or an array of globs, regardless of the specs sharing a
  root folder. Addresses
  [#24759](https://github.com/cypress-io/cypress/issues/24759).
- Further improved bundling in the binary to reduce startup and unzip time.
  Addressed in [#24909](https://github.com/cypress-io/cypress/pull/24909)

**Bugfixes:**

- Fixed a regression in [10.11.0](#10-11-0) where the Launchpad no longer showed
  a loading spinner on startup to indicate that it had successfully started and
  was in a loading state. Fixed
  [#24950](https://github.com/cypress-io/cypress/issues/24950).
- Fixed the "Create Spec from Component" capability to correctly scaffold the
  component spec from a component which contains special characters in its name.
  Before this change, a spec was scaffolded with either the wrong spec name or
  the incorrect component import which led to invalid JS errors. Fixes
  [#23492](https://github.com/cypress-io/cypress/issues/23492).
- Corrected Cypress environment variable resolution to correctly resolve
  environment variables set with `npm config set`. Fixes
  [#24556](https://github.com/cypress-io/cypress/issues/24556).
- When
  [`experimentalRunAllSpecs=true`](/app/references/experiments#End-to-End-Testing),
  the "Run N specs" directory-level buttons in the Inline Specs List now
  function correctly when activated by the keyboard. Fixes
  [#24762](https://github.com/cypress-io/cypress/pull/24762).
- Fixed unexpected behaviors when verifying a cookie was not returned from
  [`cy.getCookie()`](/api/commands/getcookie). Now it's possible to explicitly
  assert the cookie did not exist with
  `cy.getCookie('foo1').should('not.exist')`. Previously users had to verify
  cookies properties did not exist with `.its('value').should('equal', null)`.
  Addressed in [#24203](https://github.com/cypress-io/cypress/pull/24203).
- Fixed the console output returned from clicking on an aliased intercept in the
  Command Log. It now logs the yielded request/response object associated to the
  intercepted call when clicked, where previously it did not log these details.
  Fixed in [#24623](https://github.com/cypress-io/cypress/pull/24623).

## 11.2.0

_Released 11/22/2022_

**Features:**

- Re-implemented the 'Run All Specs' for End to End Testing for running multiple
  tests sequentially in open mode. This feature had been previously removed in
  Cypress 10.0. Enable 'Run All Specs' with the new experimental flag,
  [`experimentalRunAllSpecs`](/app/references/experiments#End-to-End-Testing).
  Please leave any feedback around 'Run All Specs'
  [here](https://github.com/cypress-io/cypress/discussions/21628). Your feedback
  will help us make product decisions around the future of this feature.
  Addresses [#24168](https://github.com/cypress-io/cypress/issues/24168)
- Added messaging after failures in CI to direct people to set up recording to
  the Cypress Cloud if they are not already set up to do so. Addresses
  [#24000](https://github.com/cypress-io/cypress/issues/24000).
- Visually warn in the Command Log when the
  [`cy.session()`](/api/commands/session) command fails to restore a session to
  surface to users potential issues with their setup and validation. Addresses
  [#24207](https://github.com/cypress-io/cypress/issues/24207).

**Bugfixes:**

- The [`cy.session()`](/api/commands/session) command no longer clears the page
  between setup and validation and will now always clear the page at the end of
  the command when test isolation is on. Fixes
  [#21397](https://github.com/cypress-io/cypress/issues/21397).

## 11.1.0

_Released 11/14/2022_

**Features:**

- Next.js v13 is now supported.
  [#24396](https://github.com/cypress-io/cypress/pull/24396)
- `mount()` now accepts an extensions.directives option, which will be
  registered globally for Vue2 component testing.
  [#24488](https://github.com/cypress-io/cypress/pull/24488)

**Bugfixes:**

- Fixed an [11.0.0](#11-0-0) regression where the migration workflow would error and hang
  for TypeScript projects. Fixes
  [#24643](https://github.com/cypress-io/cypress/issues/24643)
- Fixed an [11.0.0](#11-0-0) regression where `cypress run` crashed when using the junit
  reporter and an assertion failed. Fixes
  [#24652](https://github.com/cypress-io/cypress/issues/24652)
- Fixed TypeScript types for `testIsolation`. Fixes
  [#23911](https://github.com/cypress-io/cypress/issues/23911)
- Sessions will no longer be stored if validation fails which will prevent a
  previously failed session from being restored in the next test. Fixes
  [#24208](https://github.com/cypress-io/cypress/issues/24208)

**Experimental Breaking Changes:**

- Updates were made to enhance the cy.session() recovered error experience. With
  this change, cy.session() will no longer fail validation when false is
  returned from the validate callback. Fixes
  [#21398](https://github.com/cypress-io/cypress/issues/21398),
  [#24205](https://github.com/cypress-io/cypress/issues/24205), and
  [#24593](https://github.com/cypress-io/cypress/issues/24593).

## 11.0.1

_Released 11/09/2022_

**Bugfixes:**

- Fixed an [11.0.0](#11-0-0) regression that caused enabling `experimentalSessionAndOrigin`
  to throw a webpack error. Fixes
  [#24611](https://github.com/cypress-io/cypress/issues/24611)
- Fixed an [11.0.0](#11-0-0) regression where using custom reporters would cause Cypress to
  throw a 'Cannot find module' error. Fixes
  [#24607](https://github.com/cypress-io/cypress/issues/24607)
- Fixed `testIsolation` configuration validation to allow configuration updates
  without restarting Cypress. Fixes
  [#24497](https://github.com/cypress-io/cypress/issues/24497).
- Fixed an issue where `cy.origin()` would not prevent users from setting up
  `same-superdomain-origin` `cy.origin()` blocks. In these cases `cy.origin()`
  is not required and users would be better served by not using the command.
  Fixes [#24169](https://github.com/cypress-io/cypress/issues/24169)
- Fixed an [11.0.0](#11-0-0) regression where modifying the currently loaded component
  testing spec in open mode does not trigger a rerun of the spec. Fixed by
  [#24630](https://github.com/cypress-io/cypress/pull/24630)

## 11.0.0

_Released 11/08/2022_

**Summary:**

Component Testing is now generally available for projects using React, Next.js,
Angular, and Vue!

Component tests allow you to see and test your application's components in a
real browser as you work. You can use your favorite Cypress commands and
features to develop your components without running your whole app. Learn more
in our [blog](https://on.cypress.io/cypress-11-release) post.

We have also massively improved our startup performance by shipping a snapshot
of our binary instead of the source files. The performance boost applies to the
time it takes from running a cypress command (e.g. `cypress open`) to when the
Cypress app is opened. Results will vary based on your situation, but we saw up
to 84% faster startup times!

**Breaking Changes:**

**Read our
[Migration Guide](/app/references/migration-guide#Migrating-to-Cypress-110)
which explains the breaking changes in more detail.**

**Component Testing:**

- Removed `cssFile`, `cssFiles`, `style`, `styles`, `stylesheet`, and
  `stylesheets` from the `options` argument to the `cy.mount()` function. We
  recommend writing test-specific styles in a separate `css` file you import in
  your test, or in your `supportFile`. See
  [migration guide](/app/references/migration-guide#Changes-to-Mounting-Options).
  Addresses [#24328](https://github.com/cypress-io/cypress/issues/24328).
- Subsequent `cy.mount` calls within the same test will remove the last mounted
  component from the DOM. Addresses
  [#24329](https://github.com/cypress-io/cypress/issues/24329).
- `mountHook` from `cypress/react` has been removed. We recommend replacing it
  with `mount` and a component. See
  [migration guide](/app/references/migration-guide#React---mountHook-Removed).
  Addresses [#24328](https://github.com/cypress-io/cypress/issues/24328).
- `unmount` from `cypress/react` has been removed. We recommend using the API
  React provides for unmounting components,
  [unmountComponentAtNode](https://reactjs.org/docs/react-dom.html#unmountcomponentatnode).
  See
  [migration guide](/app/references/migration-guide#React---unmount-Removed).
  Addresses [#24328](https://github.com/cypress-io/cypress/issues/24328).
- `mountCallback` from `cypress/vue` has been removed. We recommend using
  `mount`. See
  [migration guide](/app/references/migration-guide#Vue---mountCallback-Removed).
  Addresses [#24328](https://github.com/cypress-io/cypress/issues/24328).
- `mount` from `cypress/vue` now returns an object with both the VueWrapper
  (wrapper) and the component instance (component). Addresses
  [#24342](https://github.com/cypress-io/cypress/issues/24342).
- When providing an inline `viteConfig` inside of `cypress.config`, any
  `vite.config.js` file is not automatically merged. See
  [migration guide](/app/references/migration-guide#Vite-Dev-Server-cypressvite-dev-server).
  Addresses [#24133](https://github.com/cypress-io/cypress/issues/24133).
- Angular providers passed as part of the mounting options will be assigned at
  the module level using the `TestBed.configureTestingModule` API. This means
  that module-level providers (resolved from imports or
  `@Injectable({ providedIn: 'root' })` can be overridden, but providers
  specified in `@Component({ providers: [...] })` will not be overridden when
  using `cy.mount(MyComponent, { providers: [...] })`. To override
  component-level providers, use the `TestBed.overrideComponent` API. See
  [migration guide](/app/references/migration-guide#Angular---Providers-Mounting-Options-Change).
  Addresses [#24047](https://github.com/cypress-io/cypress/issues/24047) and
  [#23427](https://github.com/cypress-io/cypress/issues/23427).

**General:**

- Communication with the Cypress Dashboard will now verify CAs and reject any
  unauthorized calls. If you use a self-signed CA you will need to set
  `npm_config_ca`, `npm_config_cafile`, or `NODE_EXTRA_CA_CERTS`. Addresses
  [#23980](https://github.com/cypress-io/cypress/issues/23980).

**Experimental:**

- [`cy.session()`](/api/commands/session) now requires a setup command to use
  the command. Addresses
  [#24311](https://github.com/cypress-io/cypress/issues/24311).

**Features:**

- Incorporated V8 snapshots into the build process of the Electron binary to
  improve startup time and reduce the time to download and unzip the binary
  during installation. Startup time is the time from running a command to when
  Cypress's window is first opened. Addresses
  [#18480](https://github.com/cypress-io/cypress/issues/18480).
- `cy.getCookie()`, `cy.getCookies()`, `cy.setCookie()`, `cy.clearCookie()`, and
  `cy.clearCookies()` now accept a domain option. Addresses
  [#24264](https://github.com/cypress-io/cypress/issues/24264).

**Bugfixes:**

- Fix types associated with `cy.mount()` that were incorrectly typed as `any`.
  Fixes [#24330](https://github.com/cypress-io/cypress/issues/24330).
- The `cy.mount()` snapshot now shows the mounted component instead of a blank
  page. Fixes [#24138](https://github.com/cypress-io/cypress/issues/24138).
- "Open in IDE" is no longer displayed in the command log for component tests.
  Fixes [#24366](https://github.com/cypress-io/cypress/issues/24366).
- Cypress now correctly handles CSVs and other non-html MIME types. Fixes
  [#24297](https://github.com/cypress-io/cypress/issues/24297).
- Cypress now supports project directories mounted on read-only file systems.
  Fixes [#2064](https://github.com/cypress-io/cypress/issues/2064).
- Snapshots now capture the AUT correctly when it has navigated away. Fixes
  [#24506](https://github.com/cypress-io/cypress/issues/24506).
- `cy.pause()` now functions correctly when called within the `cy.origin()`
  callback. Fixes [#21495](https://github.com/cypress-io/cypress/issues/21495).
- When utilizing dependencies within the `cy.origin()` callback, errors now show
  the correct code frame. Fixes
  [#23365](https://github.com/cypress-io/cypress/issues/23365).
- The select dropdown (in Front-end Framework, Bundler, Organization, Project,
  Preferred Editor) now highlights and adds a checkmark to the selected option.
  Fixes [#21768](https://github.com/cypress-io/cypress/issues/21768).
- The failure icon in the reporter header now displays correctly when there are
  a large number of successful tests. Fixes
  [#21838](https://github.com/cypress-io/cypress/issues/21838).
- Cypress now allows more than twenty sessions to be created in a single test.
  Fixed in [#24379](https://github.com/cypress-io/cypress/pull/24379).

## 10.11.0

_Released 10/25/2022_

**Features:**

- [`cy.session()`](/api/commands/session) is now supported when using
  [WebKit (Experimental)](/app/references/launching-browsers#WebKit-Experimental)
  and `experimentalSessionAndOrigin` is enabled. Addresses
  [#24116](https://github.com/cypress-io/cypress/issues/24116),
  [#23832](https://github.com/cypress-io/cypress/issues/23832).
- Improves user experience when connecting a project to the Dashboard. Addresses
  [#23379](https://github.com/cypress-io/cypress/issues/23379),
  [#23766](https://github.com/cypress-io/cypress/issues/23766),
  [#23767](https://github.com/cypress-io/cypress/issues/23767).
  - Users will be prompted to connect a project to the Dashboard when logging in
    from the Cypress Launchpad after a testing type has been selected.
  - Users will be prompted to record runs to the Dashboard from both the Cypress
    App and Cypress Launchpad if a project is connected to the Dashboard and has
    no recorded runs.

**Bugfixes:**

- When a chromium based browser tab or process crashes, Cypress will no longer
  hang indefinitely but will fail the current test and move on to the next.
  [#6170](https://github.com/cypress-io/cypress/issues/6170).
- Fixed as issue where browser-skipped tests were incorrectly recorded to the
  Dashboard which resulted in the Dashboard marking the test as "new" or
  "modified" when it already existed. Fixes
  [#23517](https://github.com/cypress-io/cypress/issues/23517).
- Fixed issue connecting to the cloud when a self-signed cert was in the cert
  chain. Fixes [#24298](https://github.com/cypress-io/cypress/issues/24298).
- [`cy.origin()`](/api/commands/origin) now supports more than 30 unique origin
  spec bridges per test. Fixes
  [#22874](https://github.com/cypress-io/cypress/issues/22874),
  [#23967](https://github.com/cypress-io/cypress/issues/23967).
- Fixed an issue where `document.cookie` would not reflect the correct value in
  cross-origin tests. Fixes
  [#23531](https://github.com/cypress-io/cypress/issues/23531).
- Cypress will now restart on changes to the `blockHosts` configuration entry.
  Fixes [#22634](https://github.com/cypress-io/cypress/issues/22634).
- When shown the command to record runs to the cloud, the user can select and
  copy parts of the command (like the record key), instead of only being able to
  use the "Copy" button to copy the entire command. Fixes
  [#22091](https://github.com/cypress-io/cypress/issues/22091).
- Cleaned up inconsistencies in the UI between sentence case and title case.
  Fixes [#21854](https://github.com/cypress-io/cypress/issues/21854).
- Fixed an issue where there is a visible "Project ID" section (with no
  `projectId`) when user has not connected to the Dashboard.
  [#21806](https://github.com/cypress-io/cypress/issues/21806).

**Experimental Breaking Changes:**

- [`cy.origin()`](/api/commands/origin) now supports using `require()` and
  dynamic `import()` to include dependencies. `Cypress.require()` has been
  removed. Addresses
  [#24293](https://github.com/cypress-io/cypress/issues/24293).
- The way that Cypress handles
  [test isolation](/app/core-concepts/writing-and-organizing-tests#Test-Isolation)
  has changed. The previous modes of `legacy` and `strict` have been replaced
  with `on` and `off`. Fixes
  [#24206](https://github.com/cypress-io/cypress/issues/24206).
  - The default mode is `on` when
    [`experimentalSessionAndOrigin`](/app/references/experiments) is enabled.
  - The [cy.session()](/api/commands/session) command now inherits the test
    isolation behavior for the suite it runs in.

## 10.10.0

_Released 10/11/2022_

**Features:**

- [`cy.origin()`](/api/commands/origin)'s URL argument must be an exact origin
  match to the origin of the AUT. Addresses
  [#23999](https://github.com/cypress-io/cypress/issues/23999),
  [#23814](https://github.com/cypress-io/cypress/issues/23814),
  [#24085](https://github.com/cypress-io/cypress/issues/24085),
  [#22882](https://github.com/cypress-io/cypress/issues/22882), and
  [#17166](https://github.com/cypress-io/cypress/issues/17166).
- More accurately send/set cookies in [`cy.origin()`](/api/commands/origin) when
  `experimentalSessionAndOrigin` is enabled. Addresses
  [#23551](https://github.com/cypress-io/cypress/issues/23551),
  [#22670](https://github.com/cypress-io/cypress/issues/22670), and
  [#23603](https://github.com/cypress-io/cypress/issues/23603).
- Cypress will no longer watch files when executing component tests in "run"
  mode. Addresses [#22959](https://github.com/cypress-io/cypress/issues/22959).

**Bugfixes:**

- Cypress is now able to connect to Firefox v105. Fixes
  [#23897](https://github.com/cypress-io/cypress/issues/23897).
- Cypress component tests now correctly load assets with Angular. Fixes
  [#23797](https://github.com/cypress-io/cypress/issues/23797).
- Imports in component testing support files are no longer tree-shaken by
  Webpack. Fixes [#24117](https://github.com/cypress-io/cypress/issues/24117).
- [`cy.session()`](/api/commands/session) commands will correctly fail when the
  setup function has a failing command or assertion. Fixes
  [#21399](https://github.com/cypress-io/cypress/issues/21399).
- `ngOnChanges` is now called after mounting an Angular component in component
  testing. Fixes [#23591](https://github.com/cypress-io/cypress/issues/23591).
- Code frames for Vite project stack traces now point to the correct lines of
  source code. Fixes
  [#23919](https://github.com/cypress-io/cypress/issues/23919).
- Uncaught exceptions are now only handled once in component testing. Fixes
  [#23920](https://github.com/cypress-io/cypress/issues/23920).
- Nuxt and Angular component tests now fail on uncaught exceptions. Fixes
  [#24122](https://github.com/cypress-io/cypress/pull/24122).
- Command log messages are once again being truncated to 50 lines. Fixes
  [#23995](https://github.com/cypress-io/cypress/issues/23995).

**Dependency Updates:**

- Upgraded Electron from v19 to v21. Addressed in
  [#23843](https://github.com/cypress-io/cypress/issues/23843).

## 10.9.0

_Released 09/27/2022_

**Features:**

- Added support for requiring dependencies within the
  [`cy.origin()`](/api/commands/origin) callback. See the
  [`cy.origin()`](/api/commands/origin#Dependencies--Sharing-Code) docs for more
  information.
- Added support for visiting cross-origin pages outside of a
  [`cy.origin()`](/api/commands/origin) callback. See the
  [`cy.origin()`](/api/commands/origin#Alternative-navigation) and
  [`cy.visit()`](/api/commands/visit#Visiting-cross-origin-sites) docs for more
  information and caveats. Addresses
  [#21485](https://github.com/cypress-io/cypress/issues/21485),
  [#22282](https://github.com/cypress-io/cypress/issues/22282),
  [#21300](https://github.com/cypress-io/cypress/issues/21300), and
  [#23236](https://github.com/cypress-io/cypress/issues/23236).
- Added support for re-using session data cached by
  [`cy.session()`](/api/commands/session) across specs via the
  `cacheAcrossSpecs` option. Addresses
  [#17710](https://github.com/cypress-io/cypress/issues/17710).
- Added support for advanced dev server configuration via an async function that
  can optionally modify the dev server config. Addresses
  [#23302](https://github.com/cypress-io/cypress/issues/23302).
- Launch options returned from the
  [`before:browser:launch`](/api/node-events/browser-launch-api) event can now
  include an `env` key that can be used to pass environment variables to the
  browser when it is launched. Addressed by
  [#23624](https://github.com/cypress-io/cypress/pull/23624).
- Component tests that fail now display a code frame of the source location of
  the error within the Cypress reporter. Addresses
  [#21720](https://github.com/cypress-io/cypress/issues/21720).

**Bugfixes:**

- The spec results printed stdout after a test run now show the path to the spec
  and not just the file name. Fixes
  [#22304](https://github.com/cypress-io/cypress/issues/22304).
- The viewport dropdown in the Cypress App now displays the correct text. Fixes
  [#23789](https://github.com/cypress-io/cypress/issues/23789).
- Compile errors are now surfaced in the command log during tests for Angular
  and Next projects. Fixes
  [#23219](https://github.com/cypress-io/cypress/issues/23219).
- The error "Automatic publicPath is not supported in this browser" will no
  longer be displayed when using Webpack 5 and dynamic imports. Fixes
  [#18435](https://github.com/cypress-io/cypress/issues/18435).
- The correct source control link is now sent to the Cypress Dashboard for
  failed specs when the cypress config file is not the project root. Fixes
  [#22971](https://github.com/cypress-io/cypress/issues/22971).
- The error "Invalid left-hand-side in assignment" will no longer be thrown when
  the `experimentalModifyObstructiveThirdPartyCode` flag is enabled. Fixes
  [#23647](https://github.com/cypress-io/cypress/issues/23647).
- `it.skip` now functions correctly in Angular component tests. Fixes
  [#23409](https://github.com/cypress-io/cypress/issues/23409).
- The `tsConfig` build option is now respected for Angular component tests.
  Fixes [#23673](https://github.com/cypress-io/cypress/issues/23673).
- Configuring a custom browser no longer logs a warning when trying to use that
  browser. Addressed in
  [#23446](https://github.com/cypress-io/cypress/pull/23446).

**Misc:**

- Improved the accessibility of a few components within the Cypress Launchpad
  and App. Addressed in
  [#23745](https://github.com/cypress-io/cypress/pull/23745).
- Improved the UI of the Sessions instrument panel in the Cypress reporter.
  Addresses [#21400](https://github.com/cypress-io/cypress/issues/21400).

## 10.8.0

_Released 09/13/2022_

**Features:**

- You can now run tests in WebKit, Safari's browser engine, by enabling the
  [`experimentalWebKitSupport`](/app/references/experiments) experiment and
  installing
  [`playwright-webkit`](https://www.npmjs.com/package/playwright-webkit). For
  more details, read
  [our blog post](https://www.cypress.io/blog/2022/09/13/cypress-10-8-experimental-run-tests-in-webkit).
  Addresses [#6422](https://github.com/cypress-io/cypress/issues/6422).

**Performance:**

- Several minor changes were made to reduce Cypress's memory footprint in the
  browser in an attempt to improve test times and reduce the likelihood of
  crashing the launched browser under test. Addressed in
  [#23708](https://github.com/cypress-io/cypress/pull/23708),
  [#23729](https://github.com/cypress-io/cypress/pull/23729),
  [#23737](https://github.com/cypress-io/cypress/pull/23737), and
  [#23738](https://github.com/cypress-io/cypress/pull/23738).

**Bugfixes:**

- The Dashboard will now correctly show whether a video of the spec was uploaded
  to review. Before this change, the Dashboard would shows the error message
  `The media could not be loaded` when a passing test's video was not uploaded
  because `videoUploadOnPasses` was `false`. Fixes
  [#2939](https://github.com/cypress-io/cypress/issues/2939).
- Fixed an issue where the stack traces in `run` mode did not match the stack
  traces shown in `open` mode. Now, in the terminal, users will see the source
  map line and column number in the error stack trace. Fixes
  [#7715](https://github.com/cypress-io/cypress/issues/7715).
- Fixed a bug where projects using Node.js 16.17+ and 18.6+ with ES Modules and
  TypeScript were not working with Cypress. Fixes
  [#22795](https://github.com/cypress-io/cypress/issues/22795),
  [#23393](https://github.com/cypress-io/cypress/issues/23393), and
  [#23552](https://github.com/cypress-io/cypress/issues/23552).
- When searching for specs we now normalize OS-specific path separators so that
  Windows users can use back- and forward-slashes. Fixes
  [#23426](https://github.com/cypress-io/cypress/issues/23426).
- Fixed an regression introduced in Cypress [10.3.0](#10-3-0), and further
  exposed in [10.4.0](#10-4-0), that omitted `same-site` cookies when the URL
  Scheme, Domain, and Top Level Domain matched, but the ports are different
  (i.e. same-site). Fixes
  [#23132](https://github.com/cypress-io/cypress/issues/23132).
- Autoscrolling of the command log can no longer become disabled in `run` mode.
  This fixes an issue observed where the reporter randomly stops scrolling
  during a video recording and the Command log details are not visible. Fixes
  [#16098](https://github.com/cypress-io/cypress/issues/16098) and
  [#22199](https://github.com/cypress-io/cypress/issues/22199).
- The `cypress/react18` [`cy.mount()`](/app/component-testing/react/overview)
  command's yielded rerender function has been updated to only create one
  `ReactDom.Root` element. This fixes the issue where state did not persist
  between rerenders, and all lifecycle hooks were reran when executed. Fixes
  [#23357](https://github.com/cypress-io/cypress/issues/23357).
- Fixed a regression introduced in Cypress [10.0.0](#10-0-0) where Cypress was
  incompatible with Chrome v64 - v70. Fixes
  [#23509](https://github.com/cypress-io/cypress/issues/23509).
- Fixes an issue where outdated organization and project information could be
  shown in dialogs when connecting a project to the Cypress Dashboard. Fixes
  [#23538](https://github.com/cypress-io/cypress/issues/23538).
- The `Sec-Fetch-Dest`
  [metadata request header](https://developer.mozilla.org/en-US/docs/Glossary/Fetch_metadata_request_header)
  is now set to `document` when the request is sent from the Application Under
  Test when the
  [`experimentalModifyObstructiveThirdPartyCode`](/app/references/experiments#Configuration)
  experiment is enabled. This was updated to prevent Google Authentication from
  returning `403 forbidden` in Edge and Electron. Fixes
  [#23720](https://github.com/cypress-io/cypress/pull/23720).
- Correctly override the Electron `userAgent`when the
  [`userAgent`](/app/references/configuration#Browser) configuration option
  is provided or
  [`experimentalModifyObstructiveThirdPartyCode`](/app/references/experiments#Configuration)
  experiment is enabled. Fixes
  [#23597](https://github.com/cypress-io/cypress/issues/23597).
- Fix regression introduced by Cypress [10.0.0](#10-0-0) where the `before:spec`
  plugin event was not triggered in `open` mode when the
  [`experimentalInteractiveRunEvents`](/app/references/experiments#Configuration)
  experiment was enabled. Fixed #22360.
- Fixed a regression introduced in [10.4.0](#10-4-0) where referencing an
  aliased custom command would return undefined. Fixes
  [#23652](https://github.com/cypress-io/cypress/issues/23652).
- Users can now log into the Dashboard from the "Choose a browser" page of the
  Launchpad even if a browser is not open. Fixes
  [#23779](https://github.com/cypress-io/cypress/issues/23779).
- Fixed a bug where the `cypress/svelte`
  [`cy.mount()`](/app/component-testing/svelte/overview) command was not
  logging by default. Fixed in
  [#23771](https://github.com/cypress-io/cypress/pull/23771).
- Fixed an issue where setting the
  [`testIsolation`](/app/references/configuration#Global) configuration at
  the suite-level would throw on the second test. Fixes
  [#23644](https://github.com/cypress-io/cypress/issues/23644).
- Removed misleading dependency warning in Launchpad for Next.js applications
  using component testing. Fixes
  [#23598](https://github.com/cypress-io/cypress/pull/23598).
- Added [`modifyObstructiveCode`](/app/references/configuration#Browser)
  TypeScript types. Fixes
  [#22146](https://github.com/cypress-io/cypress/issues/22146).
- Assertions will no longer 'vibrate' in the command log when asserting on the
  text of elements with trailing whitespace. Fixed in
  [#23727](https://github.com/cypress-io/cypress/pull/23727).

**Misc:**

- There were some minor improvements made to the UI when configuration files are
  created for a project when using the Project Setup workflow. Addressed in
  [#21847](https://github.com/cypress-io/cypress/issues/21847),
  [#23260](https://github.com/cypress-io/cypress/issues/23260) and
  [#23710](https://github.com/cypress-io/cypress/issues/23710).

## 10.7.0

_Released 08/30/2022_

**Features:**

- Re-introduces the experimental
  [Cypress Studio feature](/app/guides/cypress-studio). Cypress Studio
  provides a visual way to generate tests within Cypress by recording
  interactions against the application under test. Cypress Studio is available
  only in end-to-end tests, and must be enabled via the `e2e.experimentalStudio`
  flag. For more details, read
  [our blog post](https://www.cypress.io/blog/2022/08/30/how-to-use-studio-in-cypress-10-7).
  Addresses [#23461](https://github.com/cypress-io/cypress/issues/23461).
- Adds [Svelte](https://svelte.dev/) component testing support. This feature is
  being released as an Alpha, meaning there may be breaking changes in future
  Cypress releases. Addresses
  [#23037](https://github.com/cypress-io/cypress/issues/23037).
- The "Latest Runs" and "Average Duration" columns in the specs list now provide
  actions when hovered over to assist with the process of connecting the project
  to the Cypress Dashboard. Addresses
  [#22932](https://github.com/cypress-io/cypress/issues/22932).
- Informational banners were added to display instructions to assist with
  connecting projects to the Cypress Dashboard and recording a first test run.
  Users who don't plan to use the Cypress Dashboard can dismiss the banners to
  prevent seeing them in the future. Addresses
  [#22933](https://github.com/cypress-io/cypress/issues/22933),
  [#22934](https://github.com/cypress-io/cypress/issues/22934),
  [#22798](https://github.com/cypress-io/cypress/issues/22798), and
  [#22935](https://github.com/cypress-io/cypress/issues/22935).
- Vue.js projects with a custom spec pattern configuration can now use the
  "Create Spec from Component" capability introduced in v10.5.0. Addresses
  [#23071](https://github.com/cypress-io/cypress/issues/23071).
- Angular component testing projects can provide a custom configuration to the
  Webpack dev server using the
  [`projectConfig`](/app/component-testing/angular/overview#Options-API) key.
  This enables support for projects that don't adhere to Angular CLI
  conventions. Addresses
  [#23161](https://github.com/cypress-io/cypress/issues/23161).
- The Cypress `clock` can now be set to a new time using the `setSystemTime`
  function. Addresses
  [#15424](https://github.com/cypress-io/cypress/issues/15424).

**Performance:**

- The `cy.session()` command's behavior has been enhanced to no longer clear the
  dom after a validation function runs. This means a `cy.visit()` command is no
  longer required after running `cy.session()` when a validation function is
  used. Addresses [#22368](https://github.com/cypress-io/cypress/issues/22368).

**Bugfixes:**

- Fixed an issue where Cypress could crash if a websocket upgrade request was
  made over HTTPS. Fixes
  [#22217](https://github.com/cypress-io/cypress/issues/22217).
- Fixed an issue where filtering with the `--spec` CLI flag in run mode option
  would not find any specs if the project was located at the root directory of a
  file system. Fixes
  [#23380](https://github.com/cypress-io/cypress/issues/23380).
- Fixed an issue where projects using Angular `v14.2.0` and above would be
  unable to run component tests. Fixes
  [#23585](https://github.com/cypress-io/cypress/issues/23585).
- Fixed an issue where snapshots performed in XHR requests could reflect the
  primary domain instead of current domain. Fixes
  [#21496](https://github.com/cypress-io/cypress/issues/21496).
- An update was made to correctly track GitHub Actions retries in the Cypress
  Dashboard. Previously retries data was not being recorded. Addressed in
  [#23445](https://github.com/cypress-io/cypress/pull/23445).
- Fixed an issue where an internal TypeScript type was exposed globally. Fixes
  [#23333](https://github.com/cypress-io/cypress/pull/23333).
- Fixed an issue where an incomplete
  [`component.devServer`](/app/references/configuration#devServer)
  configuration would cause the specs list to not display in the Cypress App
  when running Component Tests in open mode. Fixes
  [#23486](https://github.com/cypress-io/cypress/issues/23486).

**Miscellaneous:**

- Display a default icon in the browser selection menu for browsers without
  bundled icons. Fixes
  [#21766](https://github.com/cypress-io/cypress/issues/21766).

## 10.6.0

_Released 08/16/2022_

**Features:**

- Introduced a new Cypress experiment,
  [`experimentalSingleTabRunMode`](/app/references/experiments), for
  Component Testing. When enabled, all specs will execute in a single tab,
  similar to the execution behavior observed in Component Testing alpha in
  Cypress 9, which can improve `run` mode performance, but can impact spec
  isolation and reliability on large test suites. Addresses
  [#22353](https://github.com/cypress-io/cypress/issues/22353).
- Enhanced the
  [`CYPRESS_DOWNLOAD_PATH_TEMPLATE`](/app/references/advanced-installation#Environment-variables)
  environment variable interpolation to accept and replace `${version}` to allow
  version-specific download paths to be honored. Addresses
  [#5141](https://github.com/cypress-io/cypress/issues/5141),
  [#16976](https://github.com/cypress-io/cypress/issues/16976), and
  [#22864](https://github.com/cypress-io/cypress/issues/22864).

**Bugfixes:**

- Fixed an issue where the Firefox browser was not downloading files to the
  expected directory in Windows. Fixes
  [#17896](https://github.com/cypress-io/cypress/issues/17896).
- Fixed an issue in `cy.session()` where the unique session id logic was not
  persisting registered session ids, which incorrectly allowed session ids to
  override previously used session ids with different setups. Fixes
  [#22381](https://github.com/cypress-io/cypress/issues/22381).
- Fixed an issue where absolute path glob manipulation was incorrectly breaking
  `supportFile` and `specPattern` glob patterns that contained deep instances of
  the working directory. Fixes
  [#23361](https://github.com/cypress-io/cypress/issues/23361).
- Fixed an issue with the Specs list search that prevented full path matching.
  Fixes [#22463](https://github.com/cypress-io/cypress/issues/22463) and
  [#21879](https://github.com/cypress-io/cypress/issues/21879).
- Fixed an issue where Specs list popovers would not display a spec's full
  filename. Fixes [#23064](https://github.com/cypress-io/cypress/issues/23064).

## 10.5.0

_Released 08/15/2022_

**Features:**

- Display a 'flaky test' indicator in the Specs Explorer for specs that are
  known to be flaky in the Dashboard. Addresses
  [#22656](https://github.com/cypress-io/cypress/issues/22656) &
  [#22657](https://github.com/cypress-io/cypress/issues/22657).
- The project drop down is now populated when connecting a project with an
  organization that only has one project. Addresses
  [#22936](https://github.com/cypress-io/cypress/issues/22936).
- Added new `testIsolation` configuration option to allow users to revert to
  `legacy` mode when `experimentalSessionAndOrigin` is set to true. Read more
  about
  [test isolation](/app/core-concepts/writing-and-organizing-tests#Test-Isolation)
  in Cypress to learn more. Addresses
  [#22279](https://github.com/cypress-io/cypress/issues/22279).
- React 18 projects will now be scaffolded with the `cypress/react18` mount
  registration during component setup. Addresses
  [#23033](https://github.com/cypress-io/cypress/issues/23033).
- A list of Vue components in the project are now available for selection when
  generating a new spec for component testing in projects that are using the
  default spec pattern. Addresses
  [#22836](https://github.com/cypress-io/cypress/issues/22836).
- If the user logs in to the Dashboard from the app, but the current project
  does not have a project ID, the user will now be able to enter the connect
  project workflow directly. Addresses
  [#23022](https://github.com/cypress-io/cypress/issues/23022)
- Adds Angular component testing support, including Angular template support and
  support for Angular standalone components. Addresses
  [#22819](https://github.com/cypress-io/cypress/issues/22819).

**Bugfixes:**

- Fixes an issue where usage of the `--spec` option would result in no specs
  found if the absolute project path included glob pattern characters. Fixes
  [#22272](https://github.com/cypress-io/cypress/issues/22272).
- Webpack entry points are no longer preserved for CT Webpack projects. Fixes
  [#23224](https://github.com/cypress-io/cypress/issues/23224)
- Fixes an issue where session state was not being reset when changing between
  specs in open mode. Fixes
  [#23146](https://github.com/cypress-io/cypress/pull/23146)
- Add delay to header tooltips so they don't pop open unless hovered on. Fixes
  [#23115](https://github.com/cypress-io/cypress/issues/23115)
- Fixed an edge-case bug where Cypress would hang in run-mode if an error was
  thrown from a `test:before:run` event handler. Fixes
  [#23039](https://github.com/cypress-io/cypress/issues/23039).
- Fixes an issue introduced in `10.3.0` where network logs could be missing
  certain information or cause certain requests to be delayed by 500ms. Fixes
  [#23227](https://github.com/cypress-io/cypress/pull/23227).
- In the 'Create Blank Spec' dialog, pressing enter or return when the focus is
  on the spec path input field will create the blank spec. Fixes
  [#21815](https://github.com/cypress-io/cypress/issues/21815).
- Fixes React 18 unmount component handling to resolve the
  `lastMountedReactDom.unmountComponentAtNode is not a function` error. Fixes
  [#23081](https://github.com/cypress-io/cypress/issues/23081).
- Fixes a regression introduced in Cypress 10.0 where Cypress no longer
  persisted the spec filter in the 'Search Specs' field during a session and
  when a project is reopened. The same filter will be used in the main specs
  list as well as the inline specs list present in the Test Runner. Fixes
  [#21837](https://github.com/cypress-io/cypress/issues/21837).
- Fixed an issue that could lead to infinite recursion and thus a crash when
  running tests that make use of `cy.intercept()`. Fixes
  [#22693](https://github.com/cypress-io/cypress/issues/22693).
- In the Launchpad, the project's name will no longer link to the 'Choose
  Testing Type' step of the launchpad. Fixes
  [#21911](https://github.com/cypress-io/cypress/issues/21911).
- CT projects using Vite `v3` work with Node versions `>=17`. Fixes
  [#23042](https://github.com/cypress-io/cypress/issues/23042) &
  [#23114](https://github.com/cypress-io/cypress/issues/23114).

**Miscellaneous:**

- Updated UI styling for Cypress `about:blank` pages. Addresses
  [#20978](https://github.com/cypress-io/cypress/issues/20978).
- Stable Firefox versions 101 and 102 are now explicitly rendered as unsupported
  in Windows due to an unpatched browser incompatibility in those versions.
  Addresses [#23164](https://github.com/cypress-io/cypress/issues/23164).
- Add a warning for users on the old React API, `cypress/react`, who are using
  React 18. Users can now take advantage of the React 18 integration,
  `cypress/react18`. Addresses
  [#23032](https://github.com/cypress-io/cypress/issues/23032).
- `cy.state('subject')` is deprecated and reading from it will log a warning to
  the console. Prefer `cy.currentSubject()` instead. Addresses
  [#23092](https://github.com/cypress-io/cypress/issues/23092).

## 10.4.0

_Released 08/02/2022_

**Features:**

- Cypress Component testing now supports React 18 via the cypress/react18
  package. Addresses
  [#21381](https://github.com/cypress-io/cypress/issues/21381) &
  [#21946](https://github.com/cypress-io/cypress/issues/21946).
- Cypress Component testing now supports Vite 3. Addresses
  [#22784](https://github.com/cypress-io/cypress/issues/22784).
- Cypress introduces a new experimental flag, called
  `experimentalModifyObstructiveThirdPartyCode`. When enabled,
  `experimentalModifyObstructiveThirdPartyCode` will turn on additional
  `modifyObstructiveCode` options to prevent frame busting, as well as striping
  integrity tags out of `<link>` and `<script>` elements and remove the electron
  user agent. In the current state of this experimental flag, SRI is not
  supported. Addresses
  [#21476](https://github.com/cypress-io/cypress/issues/21476),
  [#21307](https://github.com/cypress-io/cypress/issues/21307),
  [#22953](https://github.com/cypress-io/cypress/issues/22953), &
  [#21474](https://github.com/cypress-io/cypress/issues/21474).
- Cypress will now display a banner with a corrective action when your project
  uses a projectId that cannot be found in the Cypress Dashboard and when you do
  not have access to the current project in the Cypress Dashboard. Addresses
  [#22637](https://github.com/cypress-io/cypress/issues/22637).

**Bugfixes:**

- Fixes issue where cookies were not handled within cy.origin for requests other
  than the AUT page request. Fixes
  [#22952](https://github.com/cypress-io/cypress/issues/22952) &
  [#21474](https://github.com/cypress-io/cypress/issues/21474).
- Tooltips are now correctly displayed behind modals. Fixes
  [#22595](https://github.com/cypress-io/cypress/issues/22595).
- Fixed a hang when sending video to the dashboard from the electron browser.
  Fixes [#17627](https://github.com/cypress-io/cypress/issues/17627).
- Cypress will now throw an error when we receive an unexpected return value
  from a custom config file. Fixes
  [#21948](https://github.com/cypress-io/cypress/issues/21948).
- Cypress will now warn when detecting unsupported dependencies for component
  testing. Fixes [#22025](https://github.com/cypress-io/cypress/issues/22025).
- cy.type() can now be used to enter datetime values with seconds, to an input
  of type datetime-local, for example 1959-09-13T10:12:13. Fixes
  [#22884](https://github.com/cypress-io/cypress/issues/22884).
- Next.js in Cypress is now allowed to import global styles. Fixes
  [#22525](https://github.com/cypress-io/cypress/issues/22525)
- Fixed an issue where 'additionalIgnorePattern' was not allowed to be an array
  of strings. [#22551](https://github.com/cypress-io/cypress/issues/22551).
- Prevented timer size from changing while counting up. Fixes
  [#22846](https://github.com/cypress-io/cypress/pull/22846).
- Added icons to help indicate that column headers provide more information on
  hover. Fixes [#22638](https://github.com/cypress-io/cypress/issues/22638).
- Fixed an issue where long "run urls" are cut off in the console. Fixes
  [#22619](https://github.com/cypress-io/cypress/pull/22619).

**Dependency Updates:**

- Upgraded `electron` from `18.3.0` to `19.0.8`. Addressed in
  [#22775](https://github.com/cypress-io/cypress/pull/22775).
- Upgraded bundled Node.js version from `16.13.2` to `16.14.2`. Addressed in
  [#22775](https://github.com/cypress-io/cypress/pull/22775).
- Upgraded bundled Chromium version from `100.0.4896.75` to `102.0.5005.148`.
  Addressed in [#22775](https://github.com/cypress-io/cypress/pull/22775).

## 10.3.1

_Released 07/19/2022_

**Bugfixes:**

- Fixed an issue where file watchers were not completely closed prior to the
  Cypress App quitting, causing crashes on exit in some macOS environments.
  Fixes [#22026](https://github.com/cypress-io/cypress/issues/22026).
- Fixed issues with reloading user configuration after it is updated. Fixes
  [#21785](https://github.com/cypress-io/cypress/issues/21785) and
  [#22389](https://github.com/cypress-io/cypress/issues/22389).
- Fixed issues with `document.cookie` when testing multiple origins. Fixes
  [#22479](https://github.com/cypress-io/cypress/issues/22479) and
  [#22674](https://github.com/cypress-io/cypress/issues/22674).
- Fixed an issue retrieving git information for non-bash Unix shells. Fixes
  [#22454](https://github.com/cypress-io/cypress/issues/22454).
- Fixed an issue that prevented displayed "Last Updated" information on Windows
  for git repositories without a commit history. Addressed in
  [#22741](https://github.com/cypress-io/cypress/issues/22741).
- Fixed styling of the Latest Runs tooltip to keep it centered over the latest
  run entry. Fixes [#22629](https://github.com/cypress-io/cypress/issues/22629)
  and [#22598](https://github.com/cypress-io/cypress/issues/22598).
- Fixed styling issues with the Specs Explorer at narrow viewport widths. Fixes
  [#22626](https://github.com/cypress-io/cypress/issues/22626).
- Fixed a visual issue in the reporter where special characters would be
  incorrectly formatted with markdown. Fixes
  [#5679](https://github.com/cypress-io/cypress/issues/5679).
- Fixed an issue where the Proxy-Authorization header included capitalization
  that would fail with certain proxies. Fixes
  [#22383](https://github.com/cypress-io/cypress/issues/22383).
- Added `react-dom` as a required dependency when setting up a React project for
  Component Testing. Fixes
  [#22371](https://github.com/cypress-io/cypress/issues/22371).
- The Spec Runner will no longer overflow unexpectedly in Firefox in certain
  situations. Fixes [#21881](https://github.com/cypress-io/cypress/issues/21881)
  and [#22610](https://github.com/cypress-io/cypress/issues/22610).
- Fixed a regression where the `CYPRESS_NO_COMMAND_LOG` environment variable was
  not honored. Fixes
  [#21721](https://github.com/cypress-io/cypress/issues/21721) and
  [#21271](https://github.com/cypress-io/cypress/issues/21271).
- Using `cy.contains()` with a regular expression now matches submit-type input
  labels correctly. Fixes
  [#21166](https://github.com/cypress-io/cypress/issues/21166).
- Prevent printing "Class WebSwapCGLLayer is implemented in both" warning in
  stdout. Fixes [#21615](https://github.com/cypress-io/cypress/issues/21615).
- Fixed the pluralization of Match(es) under Project Settings. Fixes
  [#21728](https://github.com/cypress-io/cypress/issues/21728).
- Fixed a regression where absolute elements were not properly blacked out in
  screenshots. Fixes
  [#22173](https://github.com/cypress-io/cypress/issues/22173).

**Miscellaneous:**

- Improved keyboard navigation for Latest Runs data in the Specs Explorer.
  Addresses [#22628](https://github.com/cypress-io/cypress/issues/22628).
- Improved accessibility and styling around Specs Explorer tooltips. Addresses
  [#22597](https://github.com/cypress-io/cypress/issues/22597).
- Improved the styling and behavior of the Copy button seen in the Migration
  workflows. Addresses
  [#21860](https://github.com/cypress-io/cypress/issues/21860) and
  [#21862](https://github.com/cypress-io/cypress/issues/21862).
- Improved the layout of the Launchpad Docs dropdown when the viewport is
  narrow. Addresses
  [#21842](https://github.com/cypress-io/cypress/issues/21842).
- Removed autocomplete from certain inputs in the Cypress App. Addresses
  [#22102](https://github.com/cypress-io/cypress/issues/22102).
- Removed the Projects breadcrumb from the Launchpad when not in global mode.
  Addresses [#21771](https://github.com/cypress-io/cypress/issues/21771).
- Added padding to the bottom of the projects list in the Launchpad. Addresses
  [#21724](https://github.com/cypress-io/cypress/issues/21724).
- Improved the display of the "Record your first run" banner at smaller widths.
  Addresses [#21856](https://github.com/cypress-io/cypress/issues/21856).
- The Cypress App's sidebar will now automatically collapse at narrow widths.
  Addressed in [#22393](https://github.com/cypress-io/cypress/issues/22393).
- Improved punctuation consistency and reduced the need to scroll in the Key
  Differences modal. Addresses
  [#21852](https://github.com/cypress-io/cypress/issues/21852).

## 10.3.0

_Released 06/28/2022_

**Features:**

- Cypress Dashboard test data is now available real-time within Cypress. For
  more details, read
  [our blog post](https://www.cypress.io/blog/2022/06/28/cypress-10-3-0-speed-up-testing-workflows-with-improved-visibility-into-your-test-results/).
  Addressed in [#21250](https://github.com/cypress-io/cypress/issues/21250) and
  [#22497](https://github.com/cypress-io/cypress/issues/22497).
- Added a new clear button to easily clear the search text when filtering specs
  in the Cypress runner. Fixes
  [#21686](https://github.com/cypress-io/cypress/issues/21686).

**Bugfixes:**

- Fixed a memory leak in Chromium-based browsers caused by storing `data:` urls
  containing base64 encoded files unnecessarily. Fixed
  [#17853](https://github.com/cypress-io/cypress/issues/17853) and
  [#22462](https://github.com/cypress-io/cypress/issues/22462).
- Updated cross-origin cookie handling to align with browser behavior. This
  fixed various issues with cookies when testing across multiple origins. Fixed
  [#21363](https://github.com/cypress-io/cypress/issues/21363) and
  [#20685](https://github.com/cypress-io/cypress/issues/20685).
- Updated Cypress to use posix paths to fix an issue on Windows when a project
  required `node-ts`. Fixes
  [#22544](https://github.com/cypress-io/cypress/issues/22544) and
  [#22297](https://github.com/cypress-io/cypress/issues/22297).
- Fixed a 9.x to 10.x migration bug where the migration tool would hang without
  a response when it attempted to read the `pluginsFile` contents when the
  `pluginsFile` value was a directory path instead of a relative file path.
  Fixed [#22461](https://github.com/cypress-io/cypress/issues/22461).
- Fixed the process profiler to output Cypress's summarized CPU and memory
  metrics when the `cypress:server:util:process_profiler` debug stream is
  enabled. Fixed [#22022](https://github.com/cypress-io/cypress/issues/22022).
- Fix styling issue observed when long text was entered in the search when
  filtering specs in the Cypress runner. Fixes
  [#21686](https://github.com/cypress-io/cypress/issues/21686).
- Corrected the TypeScript types to include `baseUrl` as a valid test config
  override option. Fixes
  [#22374](https://github.com/cypress-io/cypress/issues/22374) and
  [#22072](https://github.com/cypress-io/cypress/issues/22072).

## 10.2.0

_Released 06/21/2022_

**Features:**

- Cypress is now available natively on Apple silicon, including the M1 and M2
  processor families. For more details, read
  [our blog post](https://www.cypress.io/blog/2022/06/21/cypress-10-2-0-run-tests-up-to-2x-faster-on-apple-silicon-m1/).
  Addresses [#19908](https://github.com/cypress-io/cypress/issues/19908).
- Cypress is now available natively on ARM64 and AArch64 systems running Linux.
  Addresses [#4478](https://github.com/cypress-io/cypress/issues/4478).
- The file name input field within the Create Spec modal is now automatically
  focused when the modal is opened. Addresses
  [#21865](https://github.com/cypress-io/cypress/issues/21865).

**Bugfixes:**

- Suppressed a misleading Chromium warning about CertVerifyProcBuiltin that
  would appear when visiting HTTPS sites in Cypress. Fixed
  [#22128](https://github.com/cypress-io/cypress/discussions/22128).
- Users will be able to see the custom reason-phrase in the HTTP response if the
  custom reason-phrase is set. Otherwise, a default status message is returned
  based on the corresponding status code as earlier. Fixed
  [#16973](https://github.com/cypress-io/cypress/issues/16973).
- Fixed an issue where Cypress would crash with an EMFILE error if the process
  ran into the file descriptor limit. Fixed
  [#22023](https://github.com/cypress-io/cypress/issues/22023).
- Fixed an issue causing a "nohoist config is ignored" warning when installing
  cypress with yarn. Fixed
  [#22147](https://github.com/cypress-io/cypress/issues/22147).
- Spec directories and file names on the Specs page are now truncated if they
  exceed their column width. Fixed
  [#21895](https://github.com/cypress-io/cypress/issues/21895).
- Updated the file links in error views to wrap appropriately and no longer
  overflow their containers. Fixed
  [#22103](https://github.com/cypress-io/cypress/issues/22103).
- The Cypress v10 introduction video will now be skipped if loading the video
  takes longer than 3 seconds. Fixed
  [#21955](https://github.com/cypress-io/cypress/issues/21955).
- Updated the warning banner to use language consistent with the rest of the
  Cypress application. Addressed in
  [#21551](https://github.com/cypress-io/cypress/pull/21551).

**Dependency Updates:**

- Upgraded the bundled `electron` version shipped with Cypress from `18.0.4` to
  `18.3.0`. Addressed in
  [#22252](https://github.com/cypress-io/cypress/pull/22252).

## 10.1.0

_Released 06/10/2022_

**Features:**

- Cypress will show an improved error message when running `cypress run --ct`
  when component testing has not been configured.
  Fixed [#21909](https://github.com/cypress-io/cypress/issues/21909)

**Bugfixes:**

- Added support for TypeScript projects using `"type": "module"` using
  ts-node/esm. Fixed
  [#22096](https://github.com/cypress-io/cypress/issues/22096),
  [#21939](https://github.com/cypress-io/cypress/issues/21939), and
  [#22074](https://github.com/cypress-io/cypress/issues/22074)
- Users can now run multiple specs with `cypress run` in headed mode on linux
  and windows in chrome. Fixed
  [#22155](https://github.com/cypress-io/cypress/issues/22155)
- The baseUrl config option will now restart the Cypress server automatically
  when it is updated in a Cypress config file. Fixed
  [#22056](https://github.com/cypress-io/cypress/issues/22056)
- The supportFile can now be detected within projects that contain glob syntax
  characters in their absolute paths. Fixed
  [#22040](https://github.com/cypress-io/cypress/issues/22040)
- Selector Playground "copy to clipboard" now copies full command rather than
  just the selector. Fixed
  [#22043](https://github.com/cypress-io/cypress/issues/22043)
- The clickable area for the specs list has been expanded to include the entire
  row. Fixed [#22105](https://github.com/cypress-io/cypress/issues/21783)
- Removed the trailing period from the "Learn More" button. Fixed
  [#21807](https://github.com/cypress-io/cypress/issues/21807)
- Clicking the application under test url will now open the application in
  another tab. Fixed
  [#21823](https://github.com/cypress-io/cypress/issues/21823)

## 10.0.3

_Released 06/03/2022_

**Bugfixes:**

- Cypress will only watch files that match the provided `specPattern`. Fixed
  [#22054](https://github.com/cypress-io/cypress/issues/22054)
- Cypress will no longer crash when run behind a proxy that blocks Cypress's
  CDN. Fixed [#22081](https://github.com/cypress-io/cypress/issues/22081)
- Contrast increased on inline spec list header items for improved
  accessibility. Fixed
  [#21870](https://github.com/cypress-io/cypress/issues/21870)
- Updated UI to not show the spec list as selected when in the runner. Fixed
  [#21873](https://github.com/cypress-io/cypress/issues/21873)
- "Cypress" is now capitalized step 3 of migration text. Fixed
  [#21798](https://github.com/cypress-io/cypress/issues/21798)
- The browser list in the cypress apps top nav is now scrollable with a large
  number of browsers.
  [#22032](https://github.com/cypress-io/cypress/issues/22032)
- Newly scaffolded spec files will no longer be generated with as a failing
  test. Fixed [#21921](https://github.com/cypress-io/cypress/issues/21921)
- Cypress will not crash if it fails to access the machine-id on windows. Fixed
  [#22110](https://github.com/cypress-io/cypress/issues/22110)

## 10.0.2

_Released 06/02/2022_

**Bugfixes:**

- Cypress will no longer watch files when in run mode. Fixed
  [#22054](https://github.com/cypress-io/cypress/issues/22054)
- Improved support for esm in windows. Fixed
  [#22038](https://github.com/cypress-io/cypress/issues/22038)
- Improved TypeScript detection in project:
  - Ensures TypeScript actually exists (via `require.resolve`) and is specified
    in dependencies or devDependencies before migrating a project to use it.
  - When creating a new project include `*tsconfig.json` glob in algorithm to
    detect TypeScript.
  - When migrating the existing files in the `cypress` folder should be enough
    info to make the determination.
  - No longer includes `.d.ts` files when detecting TypeScript
  - Fixed [#22034](https://github.com/cypress-io/cypress/issues/22034),
    [#22108](https://github.com/cypress-io/cypress/issues/22018), and
    [#21997](https://github.com/cypress-io/cypress/issues/21997)
- Vite dev-server for component testing will not crash if user has vite plugins
  that rely on non-empty plugins list. Fixed
  [#22021](https://github.com/cypress-io/cypress/issues/22021)
- Post processing ffmpeg is now run at a lower priority. Fixed
  [#21585](https://github.com/cypress-io/cypress/issues/21585)

## 10.0.1

_Released 06/01/2022_

**Bugfixes:**

- The inline spec list is now scrollable. Fixed
  [#21995](https://github.com/cypress-io/cypress/issues/21995)
- `.check()` and `.uncheck()` will now properly remove the indeterminate state
  from checkboxes. Fixed
  [#21665](https://github.com/cypress-io/cypress/pull/21665)
- An error will no longer throw warning that `cypress` isn't a module after
  migrating a project's configuration file when using the direct download of
  Cypress. Fixed [#2199](https://github.com/cypress-io/cypress/issues/21999)
- Cypress will now throw a more description error when TypeScript errors are
  encountered when reading a `cypress.config.ts` file. Addressed in
  [#22009](https://github.com/cypress-io/cypress/pull/22009), Related to
  [#21997](https://github.com/cypress-io/cypress/issues/21997) &
  [#22004](https://github.com/cypress-io/cypress/issues/22004)
- We now more correctly handle EPERM errors related to chokidar watching files
  when there are permission issues. Fixed
  [#22002](https://github.com/cypress-io/cypress/issues/22002)
- The migration step for support file is no longer shown when the user had a
  custom support file path. Fixed
  [#22012](https://github.com/cypress-io/cypress/issues/22012)
- Styles are now applied correctly after a user views the runs page and returns
  to the specs list. Fixed
  [#21931](https://github.com/cypress-io/cypress/issues/21931)

**Misc:**

- Updated messaging displayed when the `experimentalStudio` configuration is
  found. Addresses [#22008](https://github.com/cypress-io/cypress/issues/22008)

## 10.0.0

_Released 06/01/2022_

**Summary:**

Component testing is now beta! We've also reworked the Cypress app from the
ground up to modernize the interface, streamline workflows and integrate better
into your overall development experience. Read more about 10.0 in
[our blog post](https://cypress.io/blog/2022/06/01/cypress-10-release/).

**Breaking Changes:**

<Icon name="exclamation-triangle" color="red" /> Please run `cypress open` to go
through our interactive migration which will guide you in updating your files and
configuration options. Read our [Migration Guide](/app/references/migration-guide)
which explains some breaking changes in more detail.**

- We introduced several breaking changes to the **Cypress configuration file**
  detailed below:
  - Using a `cypress.json` configuration file is no longer supported. Replace
    this configuration file with a `cypress.config.js`, `cypress.config.ts`,
    `cypress.config.cjs` or `cypress.config.mjs` file. This change provides
    better flexibility and extensibility of configuration. An error will be
    thrown if both a `cypress.json` file and `cypress.config.{cjs,js,mjs,ts}`
    file are found. Addressed in
    [#18221](https://github.com/cypress-io/cypress/pull/18221),
    [#18300](https://github.com/cypress-io/cypress/pull/18300),
    [#20554](https://github.com/cypress-io/cypress/pull/20554), and
    [#20643](https://github.com/cypress-io/cypress/pull/20643).
  - A Cypress configuration file is now required and passing the CLI flag
    `--config-file=false` will throw an error. Addressed in
    [#20643](https://github.com/cypress-io/cypress/pull/20643).
  - A default configuration file will no longer be auto-generated by Cypress
    when a configuration file doesn't exist. Instead, you can run `cypress open`
    and set up your project with a specific testing type to have this file
    generated. This allows you to customize the configuration setup by
    testing-type for the language and dependencies leveraged in your project.
  - The configuration file's JSON schema is no longer supported since the
    configuration can no longer be provided via a JSON format.
- Cypress has made several **configuration option changes** including renaming
  options, removing options, and only allowing some options within a specific
  testing type. Please run `cypress open` to have our automated migration update
  these options for you.

  - Many configuration options are now specific to either end-to-end or
    component testing. The types have also been updated to match the new
    structure. Addressed in
    [#20677](https://github.com/cypress-io/cypress/pull/20677).
  - The `baseUrl` and `experimentalSessionAndOrigin` configuration options are
    no longer valid as top-level configuration options and can only be defined
    within the `e2e` configuration. Addressed in
    [#20589](https://github.com/cypress-io/cypress/pull/20589) and
    [#21588](https://github.com/cypress-io/cypress/pull/21588).
  - The `supportFile` and `slowTestThreshold` options are no longer valid as
    top-level configuration options and must now be defined within the `e2e`
    and/or `component` configurations.
  - Previously the `supportFile` option defaulted to `cypress/support/index.js`.
    Now the [`e2e.supportFile`](/app/references/configuration#e2e) option
    defaults to `cypress/support/e2e.{js,jsx,ts,tsx}` and the
    [`component.supportFile`](/app/references/configuration#component) option
    defaults to `cypress/support/component.{js,jsx,ts,tsx}`. Addressed in
    [#19776](https://github.com/cypress-io/cypress/pull/19776) and
    [#19364](https://github.com/cypress-io/cypress/pull/19364).
  - The `pluginsFile` option was removed. This option should be replaced with
    the new
    [`setupNodeEvents()`](/app/references/configuration#setupNodeEvents) and
    [`devServer()`](/app/references/configuration#devServer) configuration
    options. Addressed in
    [#18798](https://github.com/cypress-io/cypress/pull/18798) and
    [#20560](https://github.com/cypress-io/cypress/pull/20560).
  - The `testFiles` option was removed. This option was replaced with the new
    `specPattern` option. Addressed in
    [#19319](https://github.com/cypress-io/cypress/pull/19319) and
    [#20565](https://github.com/cypress-io/cypress/pull/20565).
  - The `integrationFolder` and `componentFolder` options were removed. These
    options were made obsolete by the new `specPattern` option. Addressed in
    [#19319](https://github.com/cypress-io/cypress/pull/19319).
  - The `ignoreTestFiles` option was removed. This option was replaced with the
    new `excludeSpecPattern` option. Addressed in
    [#19319](https://github.com/cypress-io/cypress/pull/19319).
  - The `experimentalStudio` option was removed with the removal of the
    experimental Cypress Studio feature. If this option is configured in your
    project, a warning message will be displayed. Please leave any feedback
    around Cypress Studio
    [here](https://github.com/cypress-io/cypress/discussions/21561). Addressed
    in [#20515](https://github.com/cypress-io/cypress/pull/20515).

- During `cypress open`, the ability to "Run all specs" and "Run filtered specs"
  has been removed. Please leave feedback around the removal of this feature
  [here](https://github.com/cypress-io/cypress/discussions/21628). Your feedback
  will help us make product decisions around the future of this feature.

- The experimental Cypress Studio feature has been removed. Please leave
  feedback around the removal of this feature
  [here](https://github.com/cypress-io/cypress/discussions/21561). Your feedback
  will help us make product decisions around the future of this feature.
  Addressed in [#20515](https://github.com/cypress-io/cypress/pull/20515).
- You will no longer be able to run your tests during `cypress run` or
  `cypress open` in
  [browser versions that are not supported by Cypress](/app/references/launching-browsers#Browser-versions-supported).

- Generated screenshots and videos will still be created inside their respective
  folders (`screenshotsFolder`, `videosFolder`). However, the paths of generated
  files inside those folders will be stripped of any common ancestor paths
  shared between spec files found by the `specPattern` option and may no longer
  be deterministic. Addressed in
  [#19319](https://github.com/cypress-io/cypress/pull/19319).

**Deprecations:**

- The `cypress open-ct` and `cypress run-ct` commands have been deprecated. Use
  `cypress open --component` and `cypress run --component` instead. Addresses
  [#18418](https://github.com/cypress-io/cypress/issues/18418).

**Features:**

- Cypress 10 now includes beta support for **component testing**. More features
  around component testing are detailed below:

  - Component testing is now integrated directly into the main app, allowing you
    to choose which testing experience you want upon launching Cypress. See our
    [current support for frameworks and bundlers](/app/component-testing/component-framework-configuration).
    Addressed in [#21111](https://github.com/cypress-io/cypress/pull/21111).
  - Cypress will now guide you through installing the component testing
    dependencies and project setup necessary to begin component testing in
    Cypress. Previously this required manual setup and referencing the
    documentation.
  - When you use the Cypress app during `cypress open` to configure your project
    for CT testing, a [`cy.mount()`](/api/commands/mount) command will be
    automatically scaffolded for you in a `ct.supportFile`.
  - You can now create an empty component testing spec file from within the
    Cypress app directly and preview the specfile upon creation.
  - The following component testing plugins are now shipped with Cypress to
    enable easy `cy.mount()` implementation. Your local framework dependencies
    found in `node_modules` will be referenced to prevent adding additional
    dependencies or peer-dependencies to your `package.json`. From now on, the
    latest plugin version will be shipped with each Cypress release. See our
    [current support for frameworks and bundlers](/app/component-testing/component-framework-configuration).
    Addressed in [#20930](https://github.com/cypress-io/cypress/pull/20930).
    - `@cypress/mount-utils@2.0.0`
    - `@cypress/react@6.0.0`
    - `@cypress/vue@4.0.0`
    - `@cypress/vue2@1.0.0`

- We've enhanced how you can set and refresh **configuration** detailed below:

  - Support for `cypress.config.js|ts|cjs|mjs` configuration files was added.
    Addressed in [#20643](https://github.com/cypress-io/cypress/pull/20643).
  - The Cypress app will now refresh when changes are made in the configuration
    file instead of closing the app. Addressed in
    [#21160](https://github.com/cypress-io/cypress/pull/21160).

- We've added several **new configuration options** detailed below:

  - The [`setupNodeEvents()`](/app/references/configuration#setupNodeEvents)
    option is a new testing type specific configuration option. It must be
    defined within the [`e2e`](/app/references/configuration#e2e) and/or
    [`component`](/app/references/configuration#component) configurations.
    This option allows you to modify your loaded configuration, listen to events
    and register plugins. This option replaces the `pluginsFile` option.
    Addressed in [#18798](https://github.com/cypress-io/cypress/pull/18798) and
    [#20560](https://github.com/cypress-io/cypress/pull/20560).

  - The [`devServer`](/app/references/configuration#devServer) option is a
    new component testing specific option that must be defined within the
    [`component`](/app/references/configuration#component) configuration.
    This option provides a mechanism for starting a component testing dev-server
    when tests are running.

  - The `specPattern` option is a new testing-type specific configuration option
    that must be defined within the
    [`e2e`](/app/references/configuration#e2e) and/or
    [`component`](/app/references/configuration#component) configurations.
    This option accepts a glob or an array of globs of the spec files to load.
    This option simplifies the spec discovery by replacing the
    `componentFolder`, `integrationFolder` and `testFiles` options. Addressed in
    [#19319](https://github.com/cypress-io/cypress/pull/19319),
    [#20565](https://github.com/cypress-io/cypress/pull/20565) and
    [#20853](https://github.com/cypress-io/cypress/pull/20853).

    - The [`e2e.specPattern`](/app/references/configuration#e2e) default
      value for new projects is `cypress/e2e/**.cy.{js,jsx,ts,tsx}`. For
      existing projects, please run `cypress open` to have your spec files
      automatically migrated to match this `specPattern`. Addressed in
      [#21193](https://github.com/cypress-io/cypress/pull/21193).
    - The [`component.specPattern`](/app/references/configuration#component)
      default value is `**/*.cy.{js,jsx,ts,tsx}`.

  - The `excludeSpecPattern` option is a new testing type specific configuration
    option that must be defined within the
    [`e2e`](/app/references/configuration#e2e) and/or
    [`component`](/app/references/configuration#component) configurations.
    This option accepts a glob or an array of globs which allows you to ignore
    spec files that would otherwise be shown in your list of specs. This option
    replaces the `ignoreTestFiles` option. Addressed in
    [#19319](https://github.com/cypress-io/cypress/pull/19319),
    [#19980](https://github.com/cypress-io/cypress/pull/19980),
    [#20763](https://github.com/cypress-io/cypress/pull/20763),
    [#20853](https://github.com/cypress-io/cypress/pull/20853).
    - The [`e2e.excludeSpecPattern`](/app/references/configuration#e2e)
      default value is the same as the replaced `ignoreTestFiles` glob pattern
      of `*.hot-update.js`.
    - The
      [`component.excludeSpecPattern`](/app/references/configuration#component)
      default value is `['**/__snapshots__/*','**/__image_snapshots__/*']` plus
      the `e2e.specPattern` glob patterns.
    - The `**/node_modules/**` pattern is automatically added to both
      `e2e.excludeSpecPattern` and `component.excludeSpecPattern` and can't be
      overridden. This is consistent with `<10.0` behavior.
  - Intelligent Code Completion was added with the `defineConfig()` helper
    function. This enables configuration auto-completion and in-line
    documentation in the configuration file in your IDE. While it's not strictly
    necessary for Cypress to parse your configuration, we recommend wrapping
    your config object with `defineConfig()`. Addressed in
    [#18302](https://github.com/cypress-io/cypress/pull/18302).

- We've made some updates to **Cypress API commands** detailed below:

  - Enhancements were made to provide visual indication of nested commands and
    logs. With this change, users are now able to click on log groups to print
    additional log details to the dev tools console.
  - The `.within()` command was updated to provide visual indication of logs and
    commands executed in the `.within` command context. Addresses
    [#20433](https://github.com/cypress-io/cypress/issues/20433).
  - The redundant `cy.session()` log is now removed. Address
    [#7673](https://github.com/cypress-io/cypress/issues/7673) in
    [#21457](https://github.com/cypress-io/cypress/pull/21457).

  - Users can now add custom `cy.hover()` and `cy.mount()` implementation using
    `Cypress.Commands.add()` since we don't provide a default implementation.
    Previously users had to use `Cypress.Command.override()` to provide the
    custom implementation. Addresses
    [#18941](https://github.com/cypress-io/cypress/issues/18941).

- We've made some updates to the **Cypress CLI** detailed below:

  - You can now pass in testing type specific configuration options via the
    `--config` CLI flag without nesting JSON. Addressed in
    [#20127](https://github.com/cypress-io/cypress/pull/20127).

  - New `--e2e` and `--component` CLI flags were added to `cypress run` and
    `cypress open` to allow a user to run or launch Cypress for a specific
    testing-type. If a testing-type specific CLI flag is not provided when
    running `cypress run`, Cypress will run end-to-end tests by default.
  - A warning message is now displayed when `cypress open` is ran with the
    `--browser` CLI flag for a browser that does not exist on the system.
    Addressed in [#18473](https://github.com/cypress-io/cypress/pull/18473).
  - If a testing type and browser flag are passed to `cypress open` when
    launching a specific project, the browser will automatically launch.
    Addressed in [#21538](https://github.com/cypress-io/cypress/pull/21538).

- The `cypress open` experience has been updated to take you through our
  **Launchpad** with many features detailed below:

  - When you launch Cypress via `cypress open` you'll be asked whether you want
    to do end-to-end or component testing and taken through the configuration
    necessary to set up your project. Addressed in
    [#18924](https://github.com/cypress-io/cypress/pull/18924).
  - Having files scaffolded on new projects during end-to-end testing is now opt
    in and not automatic. Addressed in
    [#18924](https://github.com/cypress-io/cypress/pull/18924).

  - When Cypress detects you have a `cypress.json` during `cypress run`, it will
    error and ask you to run `cypress open` to migrate. When Cypress detects you
    have a `cypress.json` during `cypress open`, it will guide you through
    project migration to ensure your project continues to work as expected.
    Addressed in [#18924](https://github.com/cypress-io/cypress/pull/18924).

- After launching the browser, there are several new features in our **App**
  detailed below:

  - The Cypress app has been redesigned so that the Command Log and all
    associated navigation display with a dark background.
  - You can now change specs or the browser within the same window as running
    your tests.
  - Many git details are now shown within your current project in Cypress
    including the current branch and the last commit details of each spec in the
    spec explorer. Addressed in
    [#20648](https://github.com/cypress-io/cypress/pull/20648),
    [#21139](https://github.com/cypress-io/cypress/pull/21139),
    [#21436](https://github.com/cypress-io/cypress/pull/21436) and
    [#20744](https://github.com/cypress-io/cypress/pull/20744)
  - When creating a new spec within Cypress, your project's language is detected
    to provide the correct file extension and the `specPattern` is checked to
    ensure the spec is found by Cypress. After creating the spec, you can
    preview the spec that was generated with the option to immediately run the
    spec or create another spec. Addressed in
    [#21225](https://github.com/cypress-io/cypress/pull/21225),
    [#20567](https://github.com/cypress-io/cypress/pull/20567),
    [#20657](https://github.com/cypress-io/cypress/pull/20657),
    [#20962](https://github.com/cypress-io/cypress/pull/20962).
  - The Settings page has been redesigned to more clearly distinguish between
    settings that are specific to the project, your device, and the Dashboard.

**Bugfixes:**

- An error message is displayed when you add a command using
  `Cypress.Commands.add()` that has the same name as an internal reserved
  Cypress command. Addresses
  [#6146](https://github.com/cypress-io/cypress/issues/6146).
- A one pixel, left, vertical border was removed that was incorrectly included
  on screenshot artifacts generated from the `cy.screenshot()` command in
  component tests. Addressed in
  [#21019](https://github.com/cypress-io/cypress/pull/21019).
- A memory leak was fixed during `cypress run` for end-to-end tests launched in
  Chromium and Firefox browsers that reduces the overall time it takes to run a
  set of specs and aligns with how the browser is launched once for all specs in
  component testing. With this change, the `before:browser:launch` node event
  will now properly only fire once per run, instead of firing before each spec.
  Addressed in [#19915](https://github.com/cypress-io/cypress/pull/19915).
- The default webpack configuration's host value was changed from `localhost` to
  `127.0.0.1` to support the Node 17+ changes with how DNS names are resolved.
  Addressed in [#21430](https://github.com/cypress-io/cypress/pull/21430).
- Cypress will throw a detailed error when some plugin versions are no longer
  supported in Cypress 10. Addressed in
  [#21169](https://github.com/cypress-io/cypress/pull/21169)

**Dependencies:**

- Added `@cypress/mount-utils@2.0.0` dependency.
- Added `@cypress/react@6.0.0` dependency.
- Added `@cypress/vue@4.0.0` dependency.
- Added `@cypress/vue2@1.0.0` dependency.

**Misc:**

- The Plugins concept in Cypress still exists with the intent to tap into,
  modify or extend the internal behavior(s) of Cypress. It however is expected
  to be used in conjunction with our new `setupNodesEvents` configuration
  option, which was named to reflect that Plugins leverage Cypress's node
  events.

## 9.7.0

_Released 05/23/2022_

**Features:**

- The Electron version and shipped Chromium browser version has been updated.
  Addressed in [#21418](https://github.com/cypress-io/cypress/pull/21418).

**Deprecations:**

- The `Cypress.Cookies.preserveOnce()` and `Cypress.Cookies.defaults()` Cypress
  APIs have been deprecated. In a future release, support for
  `Cypress.Cookies.preserveOnce()` and `Cypress.Cookies.defaults()` will be
  removed. Consider using the experimental
  [`cy.session()`](/api/commands/session) command instead to cache and restore
  cookies and other sessions details between tests. Fixed
  [#21333](https://github.com/cypress-io/cypress/issues/21333).

**Bugfixes:**

- Updated the [`cy.contains()`](/api/commands/contains) command to correctly
  error and retry if the provided regex pattern begins with an equal sign and a
  match was not initially found. Previously the command would incorrectly fail
  with a syntax error. Fixed
  [#21108](https://github.com/cypress-io/cypress/issues/21108).
- Corrected the `cy.session()` command log grouping and validation verbiage.
  This change provides better insights to logs associated with the command.
  Fixed [#21377](https://github.com/cypress-io/cypress/issues/21377).
- Removed `eventemitter2` third-party type definitions from `cy` and `Cypress`
  that were unintentionally exposed. Fixed
  [#20556](https://github.com/cypress-io/cypress/issues/20556).

**Dependency Updates:**

- Upgraded the bundled `node` version shipped with Cypress from `16.5.0` to
  `16.13.2`. Addressed in
  [#21418](https://github.com/cypress-io/cypress/pull/21418).
- Upgraded the Chromium browser version used during `cypress run` and when
  selecting Electron browser in `cypress open` from `94.0.4606.81` to
  `100.0.4896.75`. Addressed in
  [#21418](https://github.com/cypress-io/cypress/pull/21418).
- Upgraded `electron` dependency from `15.5.1` to `18.0.4`. Addressed in
  [#21418](https://github.com/cypress-io/cypress/pull/21418).

## 9.6.1

_Released 05/09/2022_

**Bugfixes:**

- Cypress can now launch on systems where Firefox is installed via Snapcraft.
  Fixed [#19793](https://github.com/cypress-io/cypress/issues/19793).
- Updates were made to ensure XHR calls are properly displaying the response
  body in the command log. Fixed
  [#21361](https://github.com/cypress-io/cypress/issues/21361).
- Fixed [`cy.contains()`](/api/commands/contains) and
  [`.should('contain', ...)`](/api/commands/should) to handle finding text that
  contains backslash characters. Fixed
  [#19116](https://github.com/cypress-io/cypress/issues/19116)
- Updated [`.type('{enter}')`](/api/commands/type) to support sending the Enter
  keystroke to submit buttons that are not rendered within a form html element,
  but are associated with a form via the `form` attribute. Fixed
  [#21163](https://github.com/cypress-io/cypress/issues/21163).
- Fixed an issue with `cy.session()` such that re-running tests in open mode
  will now correctly recreate a session. Before this change, an error was thrown
  indicating the saved `setup` function was not a function because it was
  serialized. Fixed
  [#17805](https://github.com/cypress-io/cypress/issues/17805).

## 9.6.0

_Released 04/25/2022_

**Features:**

- Now you can easily test multi-domain workflows by using the experimental
  [`cy.origin()`](/api/commands/origin) command. This feature allows you to test
  across different origins or domains within a single test. This experiment was
  designed to work side-by-side with the [`cy.session()`](/api/commands/session)
  experimental feature. You can turn on use of this command by setting the
  [`experimentalSessionAndOrigin`](/app/references/experiments) configuration
  option to `true`. For more details, read
  [our blog post](https://cypress.io/blog/2022/04/25/cypress-9-6-0-easily-test-multi-domain-workflows-with-cy-origin/).
  Addressed [#17336](https://github.com/cypress-io/cypress/issues/17336) and
  [#944](https://github.com/cypress-io/cypress/issues/944).
  - Added a new configuration option called `experimentalSessionAndOrigin`. This
    option enables support for [`cy.session()`](/api/commands/session) and
    [`cy.origin()`](/api/commands/origin) for end-to-end testing.
  - The `experimentalSessionSupport` configuration option has been removed and
    replaced by the `experimentalSessionAndOrigin` configuration option. Please
    update your configuration to use the new `experimentalSessionAndOrigin`
    option to continue to opt-in to this experimental feature.
  - When `experimentalSessionAndOrigin` is enabled, cross-origin requests will
    no longer immediately fail, but instead, time out based on the
    [`pageLoadTimeout`](/app/references/configuration#Timeouts)
    configuration. This allows the request to be appropriately handled by the
    [`cy.origin()`](/api/commands/origin) command.
  - When `experimentalSessionAndOrigin` is enabled, Cypress will no longer wait
    on page loads between hooks before moving on to the next test.

**Bugfixes:**

- Fixed an issue with Firefox 98+ where the Enter keystroke was not being sent
  to an input element when using [`.type('{enter}')`](/api/commands/type). Fixed
  [#21033](https://github.com/cypress-io/cypress/issues/21033).
- We now verify if an interruption while running tests was signaled by the user
  or if it came from an error in a plugin before showing the error message.
  Fixed [#21010](https://github.com/cypress-io/cypress/issues/21010).
- Improved the error message observed on Windows platforms when unzipping the
  Cypress binary and the max file length is exceeded. Fixed in
  [#21047](https://github.com/cypress-io/cypress/pull/21047).
- Updated the `Cypress.Commands.add()` TypeScript types to better reflect the
  attributes of the `.add()` utility and the JQuery element, a possible previous
  subject type. [#20376](https://github.com/cypress-io/cypress/issues/20376).

**Dependency Updates:**

- Upgraded `electron` dependency from `15.3.5` to `15.5.1` to consume fixes
  related to
  [improve performance](https://github.com/electron/electron/pull/33406) on
  macOS Big Sur and later. Addressed
  [#21068](https://github.com/cypress-io/cypress/issues/21068).

## 9.5.4

_Released 04/11/2022_

**Bugfixes:**

- Updates were made to silence Electron warnings related to being unable to
  connect to dbus. These errors are normal and expected, and do not result in
  test failures. Because they are always present when running Electron inside
  Docker containers, it has incorrectly led people to believe it is the
  root-cause of an error within their test run. By silencing these errors, it
  will improve the debug experience to allow users to focus on meaningful
  warning and error messages. Fixed
  [#19299](https://github.com/cypress-io/cypress/issues/19299).
- Updates were made to ensure that all `*.enable` events are sent if Cypress
  becomes disconnected from the Chrome DevTools Protocol and must re-establish a
  connection to ensure all command logs are displayed to the user. This fixes an
  issue where some command logs, like download or network events, are missing
  once Cypress has disconnected and then reconnected to the Chrome DevTools
  Protocol. Fixed [#20618](https://github.com/cypress-io/cypress/issues/20618).
- Fixed an issue where `cy.type('{enter}')` was not sending the Enter key for
  Firefox `v98+`. This was not an issue with Firefox `v97` and below. Fixed
  [#20562](https://github.com/cypress-io/cypress/issues/20562).
- Fixed a regression in [9.3.0](#9-3-0) where glob
  patterns provided to the `--spec` CLI parameter was incorrectly splitting the
  patterns in unexpected places when it should have split on commas. Fixes
  [#20794](https://github.com/cypress-io/cypress/issues/20794).
- Fixed an issue with `cy.root()` to respect the
  [`timeout`](/api/commands/root#Arguments) option passed to the command.
  Previously, when the `timeout` option was provided, it was ignored and the
  default timeout was used. Fixed
  [#19985](https://github.com/cypress-io/cypress/issues/19985).
- Updates were made to decrease the length of the Cypress cache path for Windows
  to ensure
  [installing pre-release versions](/app/references/advanced-installation#Install-pre-release-version)
  of the Cypress binary are within the maximum path length of 260 characters.
  Fixed in [#20961](https://github.com/cypress-io/cypress/pull/20961).
- Fixed a regression in [8.6.0](#8-6-0) which
  prevented `.pause()` from correctly executing when passing the
  `--headed --no-exit` CLI flags to `cypress run`. Fixed
  [#20745](https://github.com/cypress-io/cypress/issues/20745).
- Fixed a regression in [9.2.0](#9-2-0) which would
  sometimes throw an expected error on navigation with `cy.back()` and
  `cy.go()`. Fixed [#19749](https://github.com/cypress-io/cypress/issues/19749)
  and [#20539](https://github.com/cypress-io/cypress/issues/20539).
- Corrected the TypeScript type for a cookie which was incorrectly typed as
  `any` when the correct type is `Cookie`. Fixed in
  [#20513](https://github.com/cypress-io/cypress/pull/20513).
- Added the missing `Cypress.Command.addAll()` TypeScript types. Fixed
  [#18886](https://github.com/cypress-io/cypress/issues/18886).
- Fixed an uncommon error observed in `cy.session()` where an error was thrown
  when no cookies had been set for the session and the user clicks the session
  command log to view additional details in the DevTools console. Fixed in
  [#20946](https://github.com/cypress-io/cypress/pull/20946).

**Misc:**

- A minor visual update was made to the `cy.session()` command log visuals.
  Fixed [#20433](https://github.com/cypress-io/cypress/issues/20433).

**Dependency Updates:**

- Upgraded `ansi-regex` dependency from `4.1.0` to `4.1.1` to address the
  [CVE-2021-3807](https://nvd.nist.gov/vuln/detail/CVE-2021-3807) NVD security
  vulnerability. Addressed in
  [#20807](https://github.com/cypress-io/cypress/pull/20807).
- Upgraded `plist` dependency from `3.0.4` to `3.0.5` to address the
  [CVE-2022-22912](https://nvd.nist.gov/vuln/detail/CVE-2022-22912) NVD security
  vulnerability. Addressed in
  [#20808](https://github.com/cypress-io/cypress/pull/20808).

## 9.5.3

_Released 03/28/2022_

**Bugfixes:**

- Corrected a logging issue with `cy.intercept()` where the response status code
  and response body were sometimes missing from the log details in `open` mode.
  Fixed [#18757](https://github.com/cypress-io/cypress/issues/18757).
- Fixed an issue in `cy.readFile()` where the command would not retry or provide
  a meaningful error message if `null` encoding was used and the file was not
  found. Fixed [#20683](https://github.com/cypress-io/cypress/issues/20683).
- Updated the Cypress Keyboard shortcuts to only run the shortcut when the
  pressed shortcut key was not used in conjunction with either the `alt`,
  `ctrl`, or `shift` modifier keys. This fixed an issue where the Cypress
  shortcut handler would override the browser native keyboard shortcut for
  search (`ctrl + f`). Fixed
  [#20222](https://github.com/cypress-io/cypress/issues/20222).
- Updates were made to correctly escape dollar signs in the
  `CYPRESS_DOWNLOAD_PATH_TEMPLATE` environment variable. Issues were seen
  utilizing this template when the env was provided from a package manager file.
  Fixed [#19914](https://github.com/cypress-io/cypress/issues/19914).
- Fix the `Cypress.Buffer` TypeScript type to reference the static constructor
  of `Buffer`, instead of incorrectly referencing the `Buffer` instance which
  caused Type errors. Fixes
  [#20542](https://github.com/cypress-io/cypress/issues/20542).

**Dependency Updates:**

- Upgraded `electron` dependency from `15.3.4` to `15.3.5` to address the
  [CVE-2022-21718](https://nvd.nist.gov/vuln/detail/CVE-2022-21718) NVD security
  vulnerability. Addressed in
  [#20750](https://github.com/cypress-io/cypress/issues/20750).
- Upgraded `minimist` dependency from `1.2.5` to `1.2.6`. Addressed in
  [#20756](https://github.com/cypress-io/cypress/issues/20756).
- Upgraded `nanoid` dependency from `3.1.20` to `3.1.31` to address the
  [CVE-2021-23566](https://nvd.nist.gov/vuln/detail/CVE-2021-23566) NVD security
  vulnerability. Addressed in
  [#20726](https://github.com/cypress-io/cypress/pull/20726).
- Upgraded `node-forge` dependency from `1.0.0` to `1.3.0` to address the
  [CVE-2022-24771](https://nvd.nist.gov/vuln/detail/CVE-2022-24771) NVD security
  vulnerability. Addressed in
  [#20727](https://github.com/cypress-io/cypress/pull/20727).

## 9.5.2

_Released 03/14/2022_

**Bugfixes:**

- Fixed an issue with `.type()` where click events could be fired on the
  incorrect target element because the target focus changed within a key-down
  event handler callback. Fixed in
  [#20525](https://github.com/cypress-io/cypress/pull/20525).
- Fixed a regression in [9.5.0](#9-5-0) where ANSI
  colors were not removed from the FireFox warning message about the
  `chromeWebSecurity` configuration option having no effect on the Firefox
  browser. Fixes [#20496](https://github.com/cypress-io/cypress/issues/20496).
- Updates were made to the pre-release build setup such that Cypress will use a
  unique cache folder for each
  [pre-release installation](/app/references/advanced-installation#Install-pre-release-version)
  on a machine. This removes the need to run `cypress clear cache` before
  installing a new pre-release version of Cypress or before installing a new
  released version of Cypress after a pre-release version had been installed.
  Addressed in [#20296](https://github.com/cypress-io/cypress/pull/20296).

**Misc:**

- Updates were made to explicitly disable the `Origin-Agent-Cluster` header for
  proxied responses to ensure `document.domain` can continue to be set with
  Chrome v106+. This was necessary because Chrome is planning to make
  [`document.domain` immutable](https://developer.chrome.com/blog/immutable-document-domain/)
  in v106+ to relax the same-origin policy by interpreting the
  `Origin-Agent-Cluster` as `true`, whereas it is currently interpreted as
  `false`. Addresses
  [#20147](https://github.com/cypress-io/cypress/issues/20147).

**Dependency Updates:**

- Upgraded `url-parse` dependency from `1.5.6` to `1.5.9` to address these NVD
  security vulnerabilities,
  [CVE-2022-0639](https://nvd.nist.gov/vuln/detail/CVE-2022-0639),
  [CVE-2022-0686](https://nvd.nist.gov/vuln/detail/CVE-2022-0686) and
  [CVE-2022-0691](https://nvd.nist.gov/vuln/detail/CVE-2022-0691). Addressed in
  [#20386](https://github.com/cypress-io/cypress/pull/20386) and
  [#20439](https://github.com/cypress-io/cypress/issues/20439).

## 9.5.1

_Released 02/28/2022_

**Bugfixes:**

- Added a `ready` event to the Plugins process to ensure all plugins have
  successfully started before the configuration is loaded and the tests start.
  Fixed in [#19792](https://github.com/cypress-io/cypress/issues/19792).
  - This fixes an issue where the plugin is never executed and leaves Cypress
    stuck in the initialization phase, where the user can only view the loading
    spinner.
  - This enables support for node's experimental `--loader` flag for plugins.
- Made a change to the DNS lookup to improve test performances and reliability
  on MacOS machines that leverage the VMWare CBCloud SaaS solution. Before this
  change, random test failures were observed, as well as hanging tests and
  initially pending HTTP and HTTPS responses. Fixed in
  [#20062](https://github.com/cypress-io/cypress/issues/20062).
- Fixed a regression in [9.5.0](#9-5-0) where ANSI
  colors were not removed from the `cy.fixtures()` error code frame. Fixes
  [#20208](https://github.com/cypress-io/cypress/issues/20208).
- Fixed a regression in [9.5.0](#9-5-0) where the
  test config override errors were formatted incorrectly. Fixes
  [#20208](https://github.com/cypress-io/cypress/issues/20208).
- Fixed an issue where Cypress would throw an error when reporting or wrapping
  errors with booleans or numbers. Fixes
  [#19561](https://github.com/cypress-io/cypress/issues/19561).

**Dependency Updates:**

- Upgraded `url-parse` dependency from `1.5.2` to `1.5.6` to avoid authorization
  bypass through user-controlled key to address this
  [NVD security vulnerability](https://nvd.nist.gov/vuln/detail/CVE-2022-0512).
  Addressed in [#20270](https://github.com/cypress-io/cypress/issues/20270).

## 9.5.0

_Released 02/15/2022_

**Features:**

- Enhancements were made to the error experience in both run mode and open mode
  to improve readability and provide meaningful stack traces. Addressed in
  [#20124](https://github.com/cypress-io/cypress/issues/20124).
- Updated the `cy.request()` log message to hide the origin when it matched the
  browser origin to make debugging easier. This reduces the length of the log
  message that could be partially hidden if a long url is requested. Addressed
  in [#20009](https://github.com/cypress-io/cypress/issues/20009).
- Updates were made to log the `ShadowRoot` and `Document` elements as HTML
  elements. Previously these would be logged as enumerated objects, which were
  difficult to evaluate. Addressed in
  [#20049](https://github.com/cypress-io/cypress/issues/20049).
- Updated the terminal output generated in Cypress run mode to de-emphasis the
  `node` path in the run header. Addressed in
  [#20120](https://github.com/cypress-io/cypress/issues/20120).

**Bugfixes:**

- Fixed an issue where files attached during `.selectFile()` could have the
  wrong `File` prototype. Fixes
  [#20003](https://github.com/cypress-io/cypress/issues/20003).
- Updated `.select()` to only dispatch the `change` and `input` events when the
  selected option is not the currently selected option. This change aligns
  `.select()` with the browser. Fixes
  [#19494](https://github.com/cypress-io/cypress/issues/19494).
- Updated `.type(' ')` to align with the W3C standards where a click event
  should be dispatched when the Space key is pressed and the current focus is on
  a state-changing element with type `button`, `image`, `submit` or `reset`.
  Fixes [#20067](https://github.com/cypress-io/cypress/pull/20067).

## 9.4.1

_Released 01/31/2022_

**Bugfixes:**

- Fixed a regression in [9.4.0](#9-4-0) where the
  line endings in the public npm package prevented some users from running
  Cypress. Fixes [#19986](https://github.com/cypress-io/cypress/issues/19986).

## 9.4.0

_Released 01/31/2022_

**Features**

- Enhancements were made to `.selectFile()` after receiving feedback after its
  initial release in [9.3.0](#9-3-0).
  - The default behavior was updated to automatically infer the mime type of
    files based on their extension to correctly encode file uploads. Addressed
    in [#19751](https://github.com/cypress-io/cypress/issues/19751).
  - Added the `mimeType` property so you can explicitly set the mime type on
    files using the `mimeType` property. Addressed in
    [#19751](https://github.com/cypress-io/cypress/issues/19751).
  - Updated file contents types to allow either a
    [`TypedArray`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray)
    instance or a `Cypress.Buffer` instance, where previously file contents were
    expected to only be an instance of `Cypress.Buffer`. Addressed in
    [#19751](https://github.com/cypress-io/cypress/issues/19751).
  - Updated `.selectFile()` to retain the fileName of files read from disk to
    work with aliases. Addressed in
    [#19803](https://github.com/cypress-io/cypress/issues/19803).

**Bugfixes:**

- Fixed a regression in [9.3.0](#9-3-0) to correctly
  parse the `--spec` CLI parameter for glob patterns containing a range. Fixes
  [#19783](https://github.com/cypress-io/cypress/issues/19783).
- Fixed regression in [9.2.1](#9-1-1) where the
  `--openssl-legacy-provider` flag was not being passed to the plugins' child
  process when the user's system Node version was Node 17+ built with OpenSSL
  v3+ which resulted in Cypress crashing when trying to run tests. Fixes
  [#19712](https://github.com/cypress-io/cypress/issues/19712).
- Update `.type('{enter}')` to align with the W3C standards where a click event
  should be dispatched when the Enter key is pressed and the current focus is on
  a state-changing element with type `button`, `image`, `submit` or `reset`.
  Fixes [#19541](https://github.com/cypress-io/cypress/issues/19541).

## 9.3.1

_Released 01/19/2022_

**Bugfixes:**

- Fixed an issue where the bin file was released with windows line breaks. Fixes
  [#19747](https://github.com/cypress-io/cypress/issues/19747).

## 9.3.0

_Released 01/18/2022_

**Features:**

- Added a new Cypress command, called
  [`.selectFile()`](/api/commands/selectfile), to select a file or files in an
  HTML5 input element or simulate dragging a file or files into the browser. The
  API is similar to `cypress-file-upload` and we have provided a
  [migration guide](/app/references/migration-guide#Migrating-from-cypress-file-upload-to-selectFile)
  for previous users of that plugin. For more details, see
  [our blog post](https://cypress.io/blog/2022/01/18/uploading-files-with-selectfile/).
  Fixes [#19524](https://github.com/cypress-io/cypress/issues/19524) and
  [#170](https://github.com/cypress-io/cypress/issues/170).
- Exposed the `Buffer` polyfill, as [`Cypress.Buffer`](/api/utilities/buffer),
  to enable working with binary data. Addressed in
  [#19524](https://github.com/cypress-io/cypress/issues/19524).
- Added the `CYPRESS_DOWNLOAD_PATH_TEMPLATE` environment variable which can be
  set to a string template for building the download URL for the Cypress binary.
  This environment variable is useful for users who are downloading the Cypress
  binary from a proxy that is not one-to-one with the Cypress's default download
  url. More information can be found in the
  [Install Binary](/app/references/advanced-installation#Install-binary)
  documentation. Fixes
  [#15697](https://github.com/cypress-io/cypress/issues/15697).

**Bugfixes:**

- Fixed an issue where the `--spec` CLI parameter was not working properly when
  passing multiple glob patterns that are separated by commas. Fixes
  [#16102](https://github.com/cypress-io/cypress/issues/16102).
- Fixed an issue with how the `CYPRESS_VERIFY_TIMEOUT` environment variable was
  read so it can set in a project's `package.json` or its `.npmrc`. Fixes
  [#19559](https://github.com/cypress-io/cypress/issues/19559).

**Dependency Updates:**

- Upgraded `graceful-fs` from `4.2.0` to `4.2.9`. This upgrade resolves issues
  observed with using graceful-fs v4.2.0 with resolve v1.21+. Addressed in
  [#19676](https://github.com/cypress-io/cypress/issues/19676) and resolves
  [#19610](https://github.com/cypress-io/cypress/pull/19610).
  - **NOTE:** This upgrade to `graceful-fs` breaks Cypress's compatibility with
    Yarn 2. We have observed errors with Yarn `2.4.2` with `graceful-fs` `4.2.9`.
    Before this change, Cypress had minimal Yarn 2 support (see
    [#6377](https://github.com/cypress-io/cypress/issues/6377)). Between Yarn 3
    fixing multiple bugs and the migration path from Yarn 2 to Yarn 3 being
    minimal, we felt the best step forward was to support and recommend Yarn 3
    over Yarn 2.
- Upgraded `electron` from `15.2.0` to `15.3.4`. Addressed in
  [#19351](https://github.com/cypress-io/cypress/issues/19351).

## 9.2.1

_Released 01/10/2022_

**Bugfixes:**

- Fixed a regression in [9.2.0](#9-2-0) to keep
  Cypress open after each spec finishes when the `--headed --no-exit` flags are
  passed to `cypress run`. Fixes
  [#19485](https://github.com/cypress-io/cypress/issues/19485).
- Improve heuristic for verifying when the `--openssl-legacy-provider` option
  should be passed to the plugins' child process when the system Node version is
  v17+. This prevents Cypress from crashing when a user has Node 17 installed
  which was built with OpenSSL v1. Fixes
  [#19320](https://github.com/cypress-io/cypress/issues/19320).
- Correctly cast the `CYPRESS_VERIFY_TIMEOUT` environment variable as a number
  so Cypress will no longer throw
  `TypeError: Expected the timeout option to be a non-negative integer`. Fixes
  [#19476](https://github.com/cypress-io/cypress/issues/19476).

**Dependency Updates:**

- Update pinned resolution of `cli-table3` from `~0.6.0` to `~0.6.1` to avoid
  problems with the bug introduced in the
  [colors.js v1.4.44-liberty-2 release](https://github.com/Marak/colors.js/issues/285).
  Addresses [#19624](https://github.com/cypress-io/cypress/issues/19624).

## 9.2.0

_Released 12/20/2021_

**Features:**

- Cypress will throw an error when a user attempts to update a configuration
  value at run-time using either the Test Configuration or using
  `Cypress.config()` that is a
  [readonly option](/app/references/configuration#Test-Configuration).
  Addresses [#6407](https://github.com/cypress-io/cypress/issues/6407) and
  [#19001](https://github.com/cypress-io/cypress/issues/19001).
- A `timeout` option has been added to the `cy.writeFile()` command, with a
  default value of `defaultCommandTimeout`. Addresses
  [#3350](https://github.com/cypress-io/cypress/issues/3350).
- The default `maxHttpBufferSize` for the internal socket server has been
  increased to
  [Node's maximum Buffer size](https://nodejs.org/api/buffer.html#bufferconstantsmax_length)
  (size varies by OS) to allow large file writes with `cy.writeFile()`.
  Addresses [#19140](https://github.com/cypress-io/cypress/issues/19140).
- Add `CYPRESS_VERIFY_TIMEOUT` environment variable to override the timeout
  duration of the `verify` command. Addresses
  [#18290](https://github.com/cypress-io/cypress/issues/18290).

**Bugfixes:**

- Prevent unnecessary snapshotting when running default assertions that would
  unnecessarily increase CPU use in `cypress open` mode which lead to out of
  memory crashes on certain browsers. Fixes
  [#18549](https://github.com/cypress-io/cypress/issues/18549).
- Removed automatic retries for failed HTTP requests through the proxy. This
  fixes an issue where failed requests could be re-sent too many times in some
  conditions. This change could increase the number of failed requests that your
  app sees. Fixes [#19043](https://github.com/cypress-io/cypress/issues/19043).
- Reduced the occurrence of an issue where logs for `fetch` and `xhr` requests
  could be associated with the wrong request. Fixes
  [#19043](https://github.com/cypress-io/cypress/issues/19043).
- Tests that are skipped within `then` blocks will no longer throw errors
  causing the test to fail. Tests that are skipped outside of `then` blocks will
  no longer trigger the fail event. This will prevent screenshots from happening
  from errors thrown by the fail event. Fixes
  [#14867](https://github.com/cypress-io/cypress/issues/14867) and
  [#17660](https://github.com/cypress-io/cypress/issues/17660).
- Fixed a regression in [9.0.0](#9-0-0) where a
  fixture provided in a static response to `cy.intercept()` did not support
  passing `null` to encoding to read the fixture as a Buffer. This identified an
  undocumented [9.0.0](#9-0-0) Breaking Change where the default read behavior of a
  fixture changed from a Buffer to being read with `utf8` encoding. Fixes
  [#19344](https://github.com/cypress-io/cypress/issues/19344).
- Fixed a regression in [9.0.0](#9-0-0) where
  `cy.contains()` attempted to ignore `<script>` and `<style>` elements found
  within `<body>`. by deleting them from the dom. This behavior was corrected to
  ignore the elements without deleting them. Fixes
  [#19377](https://github.com/cypress-io/cypress/issues/19377).
- Cypress will no longer crash when proxying an ill formed request. For example,
  if the application under test has a resource of `"http: //localhost/asset.js"`
  (notice the extraneous space), Cypress will now log a debug message and the
  asset will fail to load. Fixes
  [#9220](https://github.com/cypress-io/cypress/issues/9220).
- Correct `Cypress.Command.add()` and `Cypress.Command.override()` TypeScript
  types. Fixes [#18879](https://github.com/cypress-io/cypress/issues/18879),
  [#19095](https://github.com/cypress-io/cypress/issues/19095) and
  [#18940](https://github.com/cypress-io/cypress/issues/18940).
  - Custom command implementations typings take into account `prevSubject`
    variants.
  - Custom command implementations now allows to NOT return a value.
  - Custom command overwrites typings take into account `originalFn` function.
- Add types for `Cypress.session.clearAllSavedSessions()`. Fixes
  [#19363](https://github.com/cypress-io/cypress/issues/19363).

**Dependencies:**

- Upgraded `ssri` from `6.0.1` to `6.0.2` to mitigate
  [ssri vulnerability](https://snyk.io/vuln/npm:ssri@6.0.1). Addressed in
  [#19351](https://github.com/cypress-io/cypress/issues/19351).

## 9.1.1

_Released 12/03/2021_

**Bugfixes:**

- Fixed a regression in [9.1.0](#9-1-0) where our
  built binary didn't contain patches to some dependencies. Addressed in
  [#19239](https://github.com/cypress-io/cypress/pull/19239). This fixed some
  issues including:
  - Requests containing `~` will no longer be improperly encoded. Fixes
    [#19083](https://github.com/cypress-io/cypress/issues/19083),
    [#19084](https://github.com/cypress-io/cypress/issues/19084),
    [#19115](https://github.com/cypress-io/cypress/issues/19115),
    [#19096](https://github.com/cypress-io/cypress/issues/19096),
    [#19178](https://github.com/cypress-io/cypress/issues/19178).
  - A TypeError displaying `data.hasOwnProperty is not a function` will no
    longer throw in some situations. Fixes
    [#19091](https://github.com/cypress-io/cypress/issues/19091).
  - Empty extra hooks will no longer be sent as data when recording to the
    Dashboard. Fixes
    [#19087](https://github.com/cypress-io/cypress/issues/19087).
  - The Runner hanging when baseUrl is set to null to load a local file. Fixes
    [#19105](https://github.com/cypress-io/cypress/issues/19105)
- When using the default configuration of `"nodeVersion": "system"` with an
  installed system node `>=17`, Cypress will now work properly rather than throw
  an error incorrectly pointing to the user's plugin file. Fixes
  [#18914](https://github.com/cypress-io/cypress/issues/18914).
- Shadow DOM elements no longer error as hidden during actionability when the
  element is covered by its parent shadow root. Fixes
  [#18008](https://github.com/cypress-io/cypress/issues/18008).
- When using `.type()` events now correctly propagate out of the shadow DOM.
  Fixes [#17531](https://github.com/cypress-io/cypress/issues/17531).
- The `this` context is now properly preserved when overwriting `cy.clock()`.
  Fixes [#19158](https://github.com/cypress-io/cypress/issues/19158).

**Dependencies:**

- Upgraded `@cypress/request` from `2.88.7` to `2.88.10`. Addressed in
  [#19099](https://github.com/cypress-io/cypress/issues/19099).

## 9.1.0

_Released 11/22/2021_

**Features:**

- A `CYPRESS` environment variable will be set to true in child processes where
  Cypress runs user code in Node.js. You can now detect that you're running in
  Cypress by looking for `process.env.CYPRESS`. Addresses
  [#18805](https://github.com/cypress-io/cypress/issues/18805).

**Bugfixes:**

- Specs with % in the filename will no longer fail to load and now behave as any
  other spec. Fixes
  [#18871](https://github.com/cypress-io/cypress/issues/18871).
- When using the Selector Playground, the HTML attribute's value will be wrapped
  in double-quotes. Fixes
  [#1884](https://github.com/cypress-io/cypress/issues/1884).
- The call count is now shown in the Command Log when using
  `cy.stub().log(false)`. Fixes
  [#18907](https://github.com/cypress-io/cypress/issues/18907).
- The warning message for retrying connection to a browser has been improved to
  indicate when it is still waiting. Fixes
  [#18644](https://github.com/cypress-io/cypress/issues/18644).
- Cypress commands that rely on `this` context now have access to `this` when
  overridden. Fixes [#18899](https://github.com/cypress-io/cypress/pull/18899).
- Test configuration is now correctly applied when using `only`. Fixes
  [#18959](https://github.com/cypress-io/cypress/issues/18959).

## 9.0.0

_Released 11/10/2021_

**Breaking Changes:**

- The `nodeVersion` configuration option now defaults to `system`. The behavior
  of the `system` option has changed to always use the Node.js binary/version
  that launched Cypress. If Cypress was not launched via the terminal, Cypress
  will use the `bundled` Node.js version. This could change the behavior of code
  within your `pluginsFile` since it may be run in your `system` Node.js
  version. Addresses
  [#18684](https://github.com/cypress-io/cypress/issues/18684).
- Windows 32-bit is no longer supported in Cypress. Addresses
  [#17962](https://github.com/cypress-io/cypress/issues/17962).
- An error will now be thrown if an invalid value is passed to `Cypress.config`.
  Previously invalid values were ignored and could cause unexpected behavior.
  Addresses [#18589](https://github.com/cypress-io/cypress/pull/18589).
- `cy.contains()` no longer yields the `<body>` element when it matches the
  content of `<script>` or `<style>` tags. Addresses
  [#14861](https://github.com/cypress-io/cypress/issues/14861).
- Attempting to add an existing built-in Cypress command using
  `Cypress.Commands.add()` will now throw an error, indicating that
  `Cypress.Commands.overwrite()` should be used instead to overwrite the
  behavior of existing commands. Addresses
  [#18572](https://github.com/cypress-io/cypress/issues/18572).
- Custom command implementations are now typed based on the declared custom
  chainables. Addresses
  [#17496](https://github.com/cypress-io/cypress/pull/17496).
- The bundled Node.js version was upgraded from `14.17.0` to `16.5.0`. This
  could change the behavior of code within the `pluginsFile` when using the
  bundled Node.js version of Cypress. Addressed in
  [#18317](https://github.com/cypress-io/cypress/pull/18317).
- The default read behavior of a fixture provided as a static response in
  `cy.intercept()` changed from being read as a Buffer to using `utf8` encoding.
  This aligns the default read behavior of `cy.intercept()` to `cy.readFile()`
  and `cy.fixture()`. Addresses
  [#18534](https://github.com/cypress-io/cypress/issues/18534).

**Deprecations:**

- The `nodeVersion` configuration option has been deprecated and will be removed
  in a future release.

**Features:**

- When `null` is passed as the encoding to `cy.readFile()` or `cy.fixture()`,
  the file is treated as binary and read as a Buffer. Similarly, `null` passed
  as the encoding to `cy.writeFile()` allows direct writing of buffers. If the
  encoding is unspecified, the default remains `utf8`, matching the current
  behavior. Addresses
  [#18534](https://github.com/cypress-io/cypress/issues/18534).

**Bugfixes:**

- Sticky elements within a fixed container will now be able to be properly
  scrolled to during action commands. Fixes
  [#4233](https://github.com/cypress-io/cypress/issues/4233).
- `document.referrer` will now correctly reflect the correct value from the
  application under test after `cy.visit()`. Fixes
  [#4295](https://github.com/cypress-io/cypress/issues/4295).

**Dependencies:**

- Upgraded Chrome browser version used during `cypress run` and when selecting
  Electron browser in `cypress open` from `91` to `94`. Addressed in
  [#15292](https://github.com/cypress-io/cypress/pull/18317).
- Upgraded bundled Node.js version from `14.17.0` to `16.5.0`. Addressed in
  [#15292](https://github.com/cypress-io/cypress/pull/18317).
- Upgraded `electron` from `14.1.0` to `15.2.0`. Addressed in
  [#15292](https://github.com/cypress-io/cypress/pull/18317).

## 8.7.0

_Released 10/25/2021_

**Features:**

- There are changes to how "slow" tests are determined and displayed in Cypress.
  Addresses [#18496](https://github.com/cypress-io/cypress/pull/18496).
  - Added a [`slowTestThreshold`](/app/references/configuration#Timeouts)
    configuration option to customize when tests are considered "slow" during
    `cypress run`. A test that runs slower than the given threshold will display
    in orange text in the default 'spec' reporter. This configuration can be set
    in your Cypress config file or via specific
    [test configuration](/app/core-concepts/writing-and-organizing-tests#Test-Configuration).
  - The default slow test threshold was changed from 75ms (Mocha's default) to
    10000ms for e2e tests and 250ms for component tests. To restore the old
    behavior, you can add `"slowTestThreshold": 75` to your Cypress config file.
  - All tests will show the time the test ran in milliseconds during
    `cypress run` with the default 'spec' reporter.
- Users can pass an `overwrite: true` option to `Cypress.Screenshot.defaults` to
  change default behavior to overwrite existing screenshots without having to
  set `overwrite` for each `cy.screenshot()` command. Addresses
  [#7955](https://github.com/cypress-io/cypress/issues/7955).

**Bugfixes:**

- Fixed a regression introduced in [8.6.0](#8-6-0) where videos recorded in
  Electron to the Dashboard were not playable in the Firefox or Safari browser
  and were not compatible with QuickTime player in MacOS.
- Fixed a regression introduced in [8.6.0](#8-6-0) so that the warning about the
  `projectRoot` directory not being writeable will now display correctly. Fixes
  [#18485](https://github.com/cypress-io/cypress/issues/18485).
- Improved the error message when running Cypress without non-root permissions.
  Fixes [#18445](https://github.com/cypress-io/cypress/issues/18445).
- An error now throws when invalid options are passed to the `selectorPriority`
  configuration option of `Cypress.SelectorPlayground.defaults`. Valid values
  are `data-*`, `id`, `class`, `tag`, `attribute`, or `nth-child`. Fixes
  [#7745](https://github.com/cypress-io/cypress/issues/7745).

**Dependency Updates:**

- Pinned resolution of `ua-parser-js` to `0.7.24` to avoid dependency resolution
  to the compromised package versions. Please read the
  [security advisory](https://github.com/advisories/GHSA-pjwm-rvh2-c87w) and
  take actions advised as soon as possible. Addressed in
  [#18611](https://github.com/cypress-io/cypress/pull/18611)

## 8.6.0

_Released 10/11/2021_

**Features:**

- `cy.screenshot()` now accepts `overwrite: true` as an option to overwrite
  existing screenshots with the same file name. Addresses
  [#7955](https://github.com/cypress-io/cypress/issues/7955).
- `cy.select([])` can now be used to clear any selected options in a multi-value
  select. Addresses [#4318](https://github.com/cypress-io/cypress/issues/4318).
- Using `cy.pause()` when using `cypress run --headed --no-exit` will now pause
  a test. Addresses [#4044](https://github.com/cypress-io/cypress/issues/4044).

**Bugfixes:**

- Fixed a regression introduced in [8.2.0](#8-2-0) where certain XMLHttpRequests
  would not display their response bodies in the DevTools Console when clicked.
  Fixes [#17656](https://github.com/cypress-io/cypress/issues/17656).
- Fixed a regression in [8.3.0](#8-3-0) where capturing videos in Chrome
  versions earlier than 89 would result in choppy videos and skipped frames.
  Fixes [#18021](https://github.com/cypress-io/cypress/issues/18021).
- Cypress displays the correct error when certain custom error types are thrown
  within a test. Fixes
  [#18259](https://github.com/cypress-io/cypress/issues/18259).
- The Cypress App will no longer crash when passed a `--spec: {}` from the CLI
  and instead error when passed an invalid object argument. Fixes
  [#3957](https://github.com/cypress-io/cypress/issues/3957).
- Logging a plain object no longer results in the error "Cannot convert object
  to primitive value". Fixes
  [#18143](https://github.com/cypress-io/cypress/issues/18143).

**Misc:**

- Updated the `cy.request()` error message when conflicting `failOnStatusCode`
  and `retryOnStatusCodeFailure` options are passed to be clearer. Fixes
  [#18271](https://github.com/cypress-io/cypress/issues/18271).

**Dependency Updates:**

- Upgraded the Chromium browser version used during `cypress run` and when
  selecting Electron browser in `cypress open` from `91.0.4472.164` to
  `93.0.4577.58`.
- Upgraded `electron` from `13.2.0` to `14.1.0`. Addressed in
  [#18318](https://github.com/cypress-io/cypress/issues/18318) and
  [#18384](https://github.com/cypress-io/cypress/issues/18384).

## 8.5.0

_Released 09/27/2021_

**Features:**

- You can now select an option by index within the
  [`.select()`](/api/commands/select) command. Addresses
  [#757](https://github.com/cypress-io/cypress/issues/757).
- Cypress now captures the repository URL on Drone CI. Addresses
  [#18210](https://github.com/cypress-io/cypress/issues/18210).

**Bugfixes:**

- The download of Cypress now respects the `NO_PROXY` environment variable when
  one is set. Fixes
  [#17702](https://github.com/cypress-io/cypress/issues/17702).
- When using a custom config file and setting it up to record to the Dashboard,
  Cypress now writes the `projectId` in the custom config file instead of
  `cypress.json`. Fixes
  [#5747](https://github.com/cypress-io/cypress/issues/5747).

**Misc:**

- Windows 32-bit has been deprecated and support will be removed in a later
  release. A deprecation warning will now display when using Cypress in a
  Windows 32-bit OS. See
  [#17962](https://github.com/cypress-io/cypress/issues/17962) for more detail.
  Addresses [#18094](https://github.com/cypress-io/cypress/issues/18094).
- Improved the error messages when an invalid argument type is passed to the
  [`.select()`](/api/commands/select) command. Addressed in
  [#18234](https://github.com/cypress-io/cypress/pull/18234).

## 8.4.1

_Released 09/17/2021_

**Bugfixes:**

- Cypress will no longer crash when setting up a project to record to the
  Dashboard or viewing the runs or record key for a previously set up project.
  Fixes [#18129](https://github.com/cypress-io/cypress/issues/18129).
- The branch collected for Drone CI now correctly reflects the source PR branch
  for showing in the Cypress Dashboard. Fixes
  [#17860](https://github.com/cypress-io/cypress/issues/17860).

## 8.4.0

_Released 09/13/2021_

**Features:**

- When the URL contains non-ASCII characters, you can use the new `decode`
  option of `cy.url()` to decode it. Addresses
  [#17399](https://github.com/cypress-io/cypress/issues/17399).

**Bugfixes:**

- Cypress now better handles situations where the extension was installed in a
  read-only location. Fixes
  [#3852](https://github.com/cypress-io/cypress/issues/3852).
- A clearer error message is now thrown for `.check()` or `.uncheck()` when
  there are no matching value attributes found.
  Fixes [#7379](https://github.com/cypress-io/cypress/issues/7379).
- Hooks will no longer rerun on unrelated tests in some situations after a
  domain navigation. Fixes
  [#17705](https://github.com/cypress-io/cypress/issues/17705).
- `clientCertificate` types have been added for the Cypress configuration. Fixes
  [#17799](https://github.com/cypress-io/cypress/issues/17799).

## 8.3.1

_Released 08/27/2021_

**Performance:**

- Projects will now open much faster on MacOS Big Sur with improved browser
  detection performance. Fixes
  [#17773](https://github.com/cypress-io/cypress/issues/17773).

**Bugfixes:**

- Fixed a regression in [8.3.0](#8-3-0) where the
  correct exit code would not be issued during `cypress run-ct` while running in
  the Electron browser. Fixes
  [#17752](https://github.com/cypress-io/cypress/issues/17752) and
  [#17885](https://github.com/cypress-io/cypress/issues/17885).
- Fixed a regression in [8.3.0](#8-3-0) where
  Cypress would cause a `SIGSEGV` error on Mac when closing the Cypress app
  opened via `cypress open`. Fixes
  [#17766](https://github.com/cypress-io/cypress/issues/17766).
- The `beforeinput` event now correctly fires in Firefox during keyboard events.
  Fixes [#17583](https://github.com/cypress-io/cypress/issues/17583).

**Misc:**

- `cy.document()` typings now allow for the `timeout` option. Fixes
  [#17695](https://github.com/cypress-io/cypress/issues/17695).
- `cy.title()` typings now allow for the `timeout` option. Fixes
  [#17781](https://github.com/cypress-io/cypress/issues/17781)

**Dependency Updates:**

- Upgraded `electron` from `13.1.7` to `13.2.0`. Addressed in
  [#17772](https://github.com/cypress-io/cypress/pull/17772).
- Upgraded `@cypress/request` from `2.88.5` to `2.88.6`. Addresses
  [#17622](https://github.com/cypress-io/cypress/pull/17622).

## 8.3.0

_Released 08/16/2021_

**Features:**

- The instructions for recording a run have been updated for some users.
  Addressed in [#17317](https://github.com/cypress-io/cypress/pull/17317).

**Performance:**

- We addressed an issue that increased CPU usage during video recording in
  Chrome 89+/Electron 12+. Fixes
  [#16152](https://github.com/cypress-io/cypress/issues/16152).
- Fixed a regression in [7.2.0](#7-2-0) that would
  cause `cy.visit()` to take longer to fire its load event in some
  circumstances. Fixes
  [#16671](https://github.com/cypress-io/cypress/issues/16671).

**Bugfixes:**

- Fixed an issue that could cause intermittent OpenSSL errors when the local CA
  cert cache becomes corrupted. Fixes
  [#8705](https://github.com/cypress-io/cypress/issues/8705).
- Fixed a regression in [7.2.0](#7-2-0) causing the
  menu bar of Cypress to not be clickable in Windows. Fixes
  [#16323](https://github.com/cypress-io/cypress/issues/16323).
- `res.send` of `cy.intercept()` will no longer override JSON-related content
  types. Fixes [#17084](https://github.com/cypress-io/cypress/issues/17084).
- The `times` option of `cy.intercept` now works properly with `req.reply`.
  Fixes [#17139](https://github.com/cypress-io/cypress/issues/17139).
- Fixed a regression in [8.0.0](#8-0-0) where
  Cypress would always warn that `chromeWebSecurity` is set to "false" when it
  wasn't. Fixes [#17614](https://github.com/cypress-io/cypress/issues/17614).

**Dependency Updates:**

- Upgraded Chrome browser version used during `cypress run` and when selecting
  Electron browser in `cypress open` from `89` to `91`. Addressed in
  [#17408](https://github.com/cypress-io/cypress/pull/17408).
- Upgraded bundled Node.js version from `14.6.0` to `14.17.0`. Addressed in
  [#17408](https://github.com/cypress-io/cypress/pull/17408).
- Upgraded `electron` from `12.0.0-beta.14` to `13.1.7`. Addressed in
  [#17408](https://github.com/cypress-io/cypress/pull/17408).
- Upgraded `url-parse` from `1.5.1` to `1.5.2`. Addressed in
  [#17719](https://github.com/cypress-io/cypress/pull/17719).

## 8.2.0

_Released 08/04/2021_

**Features:**

- You can now cache and restore [cookies](/api/cypress-api/cookies),
  [`localStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage),
  and
  [`sessionStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage)
  in order to reduce test setup times by using
  [`cy.session()`](/api/commands/session). The `session` API is experimental and
  can be enabled by setting the
  [`experimentalSessionSupport`](/app/references/experiments) flag to `true`
  in your Cypress config. See
  [our blog](https://cypress.io/blog/2021/08/03/authenticate-faster-in-tests-cy-session-command/)
  and the [`cy.session()`](/api/commands/session) doc for more detail.
- The logging experience around HTTP requests has been updated.
  - `fetch` requests are always displayed in the Command Log, regardless of if
    `experimentalFetchSupport` is enabled.
  - Duplicate logs for XHRs, fetches, and `cy.intercept()` have been
    consolidated - Fixes
    [#14843](https://github.com/cypress-io/cypress/issues/14843).
  - The user experience around the information displayed in the console when
    clicking on `cy.intercept()` request logs has been improved.
  - Request logs now indicate if a request has gone to the origin or if it has
    been stubbed by displaying a filled or empty circle in the request log.
  - Request logs now display information about if the request and/or response
    was modified by a `cy.intercept()`.
  - The tooltip displayed when mousing over a request log now displays
    information about the matched `cy.intercept()`/`cy.route()` rules.
  - Fixed an issue where pending request logs were not ended between tests.
    Fixes [#14655](https://github.com/cypress-io/cypress/issues/14655).
- There's now a `Cypress.currentTest` property to access name the currently
  executing test via `Cypress.currentTest.title` and
  `Cypress.currentTest.titlePath`. Addresses
  [#2972](https://github.com/cypress-io/cypress/issues/2972).

**Bugfixes:**

- A "removing cookie failed" error will no longer throw when cookies are cleared
  in Firefox. Fixes [#6375](https://github.com/cypress-io/cypress/issues/6375).
- Cypress no longer throws the error "cannot read property split of undefined"
  in certain circumstances when application errors are thrown. Fixes
  [#17378](https://github.com/cypress-io/cypress/issues/17378).
- Cypress now properly runs the final test when nested in a suite with a
  `before` hook. Fixes
  [#9026](https://github.com/cypress-io/cypress/issues/9026).
- Fixed a regression in [8.0.0](#8-0-0) where an
  error would longer throw when there is no `/etc/passwd` entry for the current
  user, such as in some Docker and GitHub Action setups. Fixes
  [#17415](https://github.com/cypress-io/cypress/issues/17415).
- Cypress now throws if a function is incorrectly passed as the second argument
  to `cy.wait()`. Fixes
  [#17436](https://github.com/cypress-io/cypress/issues/17436).

## 8.1.0

_Released 07/29/2021_

**Features:**

- When using `experimentalStudio`, you can now generate assertions in
  [Cypress Studio](/app/guides/cypress-studio) by right clicking on an
  element. Addressed in
  [#16295](https://github.com/cypress-io/cypress/pull/16295).
- When searching specs in the Test Runner during end-to-end testing, characters
  that are not letters will be ignored and don't have to be typed. Addressed in
  [#17346](https://github.com/cypress-io/cypress/issues/17346).

**Performance:**

- The Test Runner's performance has been improved when running a large number of
  commands within a single test. Fixes
  [#6783](https://github.com/cypress-io/cypress/issues/6783).

**Bugfixes:**

- Add Yarn v2 pnp support to our default webpack processor. Fixes
  [#8008](https://github.com/cypress-io/cypress/issues/8008) and
  [#16111](https://github.com/cypress-io/cypress/issues/16111).
- When running Cypress in global mode, an error will no longer be thrown when
  trying to add a new project to the Dashboard. Addressed in
  [#17514](https://github.com/cypress-io/cypress/pull/17514).
- The Test Runner will no longer crash in some instances when creating a new
  spec file from the GUI.
  [#17430](https://github.com/cypress-io/cypress/issues/17430).

## 8.0.0

_Released 07/19/2021_

**Summary:**

We've made some updates to ensure a consistent run experience across browsers.
Now all browsers run via `cypress run` run headlessly, with a device pixel ratio
of 1, and a screen size of 1280x720 by default.

**Breaking Changes:**

<Icon name="exclamation-triangle" color="red" /> Please read our [Migration Guide](/app/references/migration-guide)
which explains the changes in more detail and how to change your code to migrate
to Cypress 8.0.**

- When running `cypress run` previous to 8.0, some browsers would launch headed
  while others were launched headless by default. Cypress now runs all browsers
  during `cypress run` as headless by default. Addresses
  [#16832](https://github.com/cypress-io/cypress/issues/16832).
- The default screen size when running a headless browser has been reverted back
  to 1280x720 pixels (pre 7.0 behavior). Addresses
  [#16853](https://github.com/cypress-io/cypress/issues/16853).
- When running the `--headless` Chrome browser via `cypress run`, the device
  pixel ratio will now be 1 by default, matching the behavior of all other
  browsers. This behavior can be overridden through the
  [browser launch API](/api/node-events/browser-launch-api#Override-the-device-pixel-ratio).
  Addresses [#17375](https://github.com/cypress-io/cypress/issues/17375).
- Cypress now enforces version checks for browser launching and will error
  during `cypress run` and not allow opening the browser in `cypress open` when
  attempting to open unsupported browser versions. Cypress supports Chrome `>=64`, Firefox `>=86`, and Edge `>=79`. Addressed in
  [#17355](https://github.com/cypress-io/cypress/pull/17355).
- Arguments returned from a chained function will no longer incorrectly be of
  type `jQuery` and instead have an `any` type. Fixes
  [#16669](https://github.com/cypress-io/cypress/issues/16669).
- The `Cypress.ConfigOptions`, `Cypress.ResolvedConfigOptions` and
  `Cypress.RuntimeConfigOption` types have been updated so that `ConfigOptions`
  match the JSON schema. Addressed in
  [#17251](https://github.com/cypress-io/cypress/pull/17251).

**Features:**

- You can now configure certificate authority (CA) and client certificates to
  use within tests on a per-URL basis via a `clientCertificates` configuration
  option. See [Client certificates](/app/references/client-certificates) for
  more detail.
- Setting the environment variable `ELECTRON_RUN_AS_NODE` now starts Cypress as
  a normal Node.js process rather than an Electron process. Addresses
  [#16505](https://github.com/cypress-io/cypress/issues/16505).

**Bugfixes:**

- `console.log` and `console.error` called within the
  [plugins file](/app/core-concepts/writing-and-organizing-tests#Plugins-file)
  will now be captured in the `stdout` sent to the Cypress Dashboard, making it
  visible in Output logs in the Dashboard. Fixes
  [#7434](https://github.com/cypress-io/cypress/issues/7434).
- There are several fixes for [`cy.intercept()`](/api/commands/intercept)
  including:
  - The `times` option now works correctly with `req.continue`. Fixes
    [#16821](https://github.com/cypress-io/cypress/issues/16821).
  - `localhost` is now accepted as a valid `hostname` in the `RouteMatcher`.
    Fixes [#17015](https://github.com/cypress-io/cypress/issues/17015).
  - `delay` now works correctly with a `statusCode` of 204. Fixes
    [#15188](https://github.com/cypress-io/cypress/issues/15188).
- When using the experimental
  [Cypress Studio](/app/guides/cypress-studio), there should be a reduced
  occurrence of "Studio failed to save commands" error messages. Fixes
  [#14767](https://github.com/cypress-io/cypress/issues/14767).
- [`cy.invoke()`](/api/commands/invoke) now retains the proper `this` context on
  nested object methods. Fixes
  [#3871](https://github.com/cypress-io/cypress/issues/3871).
- We no longer trigger unnecessary snapshot re-renders when hovering over the
  Command Log. Fixes
  [#17257](https://github.com/cypress-io/cypress/issues/17257).

## 7.7.0

_Released 07/07/2021_

**Features:**

- When using `experimentalStudio`,
  [Cypress Studio](/app/guides/cypress-studio) can now copy all commands
  generated to your clipboard. Addressed in
  [#16912](https://github.com/cypress-io/cypress/issues/16912).

**Bugfixes:**

- Cypress now respects `preventScroll` options passed to `element.focus()` calls
  within the application under test. Fixes
  [#15294](https://github.com/cypress-io/cypress/issues/15294).
- Using `.contains(0)` will now show the zero in the Command Log. Fixes
  [#1119](https://github.com/cypress-io/cypress/issues/1119).
- Cypress will no longer show a warning about allowed keys for the
  `showedOnBoardingModal` when running `cypress open`. Fixes
  [#17095](https://github.com/cypress-io/cypress/issues/17095).
- The Cypress Studio introduction modal will now display with the correct
  styling. Fixes [#17102](https://github.com/cypress-io/cypress/issues/17102).
- The types for `.contains()` now correctly allow for the `includeShadowDom`
  option. Fixes [#17066](https://github.com/cypress-io/cypress/issues/17066).

**Misc:**

- We updated the messaging when Cypress fails to start to be clearer that it's
  not always due to a dependency missing. Addresses
  [#17112](https://github.com/cypress-io/cypress/pull/17112).

## 7.6.0

_Released 06/23/2021_

**Features:**

- You can now override the default delay between typing characters for `.type()`
  with [`Cypress.Keyboard.defaults()`](/api/cypress-api/keyboard-api) or
  via
  [test configuration](/app/core-concepts/writing-and-organizing-tests#Allowed-config-values).
  Addresses [#566](https://github.com/cypress-io/cypress/issues/566).
- The experience when opening a new project via `cypress open` has been
  improved. Addressed in
  [#15826](https://github.com/cypress-io/cypress/pull/15826).
  - The scaffolded example files have been updated to include examples tests of
    the TodoMVC project.
  - You can now easily delete all of the scaffolded example files directly from
    the Test Runner GUI.
  - There's now a button to create a new spec file when no spec files are found
    in the project.
  - A new onboarding banner with be present with helpful links for new users and
    new projects.
- The incoming request object yielded to request handler functions passed to
  `cy.intercept()` (`req`) now has a `req.query` property, which is a
  getter/setter for the query parameters on the request URL. Addresses
  [#16327](https://github.com/cypress-io/cypress/issues/16327).
- You can now pass an `ArrayBuffer` as a request / response body with
  `cy.intercept()`. Addresses
  [#16722](https://github.com/cypress-io/cypress/issues/16722)

**Bugfixes:**

- Cypress no longer hangs intermittently when using webpack 5. Fixes
  [#15447](https://github.com/cypress-io/cypress/issues/15447).
- It is no longer necessary to return the config from the plugins function when
  using the `dev-server:start` event for component testing. Fixes
  [#16860](https://github.com/cypress-io/cypress/issues/16860).
- `cy.intercept()` now correctly sets the response body as a string instead of
  an ArrayBuffer when it contains multi-byte characters. Fixes
  [#16292](https://github.com/cypress-io/cypress/issues/16292).
- `cy.intercept()` won't corrupt certain binary responses. Fixes
  [#16722](https://github.com/cypress-io/cypress/issues/16722).
- On Windows, the Cypress executable is now code signed by "Cypress.io, Inc.".
  This fixes `spawn UNKNOWN` errors when launching Cypress with code signing
  required by policy on Windows. Fixes
  [#2543](https://github.com/cypress-io/cypress/issues/2543)
- We now warn on `EPERM` errors when accessing the project directory instead of
  erroring. Fixes [#16933](https://github.com/cypress-io/cypress/issues/16933).
- Cypress now better handles running when browsers with unconventional versions
  are present on the machine. Fixes
  [#15485](https://github.com/cypress-io/cypress/issues/15485).
- Expanded the types for `CyHttpMessages.BaseMessage.headers` to support the
  value being an array of strings. Fixes
  [#16734](https://github.com/cypress-io/cypress/issues/16734).

**Dependency Updates:**

- Added `enquirer` dependency. Fixes
  [#16846](https://github.com/cypress-io/cypress/issues/16846).

## 7.5.0

_Released 06/07/2021_

**Features:**

- The Test Runner has a new 'Docs' menu with links and prompts specific to
  helping you get started writing tests, set up in CI, and running tests in the
  Dashboard. Addressed in
  [#16433](https://github.com/cypress-io/cypress/pull/16433).
- `cy.request()` now accepts a generic in TypeScript for specifying the type of
  the request body. Addresses
  [#9109](https://github.com/cypress-io/cypress/issues/9109).

**Bugfixes:**

- Cypress will not longer crash with a `hasBinary` infinite recursive call.
  Fixes [#16476](https://github.com/cypress-io/cypress/issues/16476).
- The `--config-file` option now correctly handles absolute paths. Fixes
  [#6136](https://github.com/cypress-io/cypress/issues/6136).
- `cy.location(<key>)` will now retry if the remote location returns an empty
  string, which is possible during otherwise harmless redirects. Fixes
  [#16463](https://github.com/cypress-io/cypress/issues/16463).
- Cypress now passes a flag to Chrome browsers to prevent update notifications
  from displaying in some cases. Fixes
  [#16693](https://github.com/cypress-io/cypress/issues/16693).
- TypeScript will now properly error when attempting to use the chai
  `<value>.should()` syntax. Fixes
  [#16548](https://github.com/cypress-io/cypress/issues/16548).

**Dependency Updates:**

- Replaced deprecated `listr` with `listr2`. Addressed in
  [#16663](https://github.com/cypress-io/cypress/pull/16663).

## 7.4.0

_Released 05/24/2021_

**Features:**

- Cypress now detects and supports testing in the Chrome Beta browser. Addresses
  [#16376](https://github.com/cypress-io/cypress/issues/16376).
- There are new keyboard shortcuts to continue (c) and to go to the next test
  (n) when the Test Runner is paused via `.pause()` and to toggle auto-scrolling
  of the Test Runner (a). Addresses
  [#248](https://github.com/cypress-io/cypress/issues/248).

**Bugfixes:**

- [`cy.request()`](/api/commands/request) can now send binary files in form
  data. Fixes [#1647](https://github.com/cypress-io/cypress/issues/1647).
- [`cy.request()`](/api/commands/request) can now send blob data. Fixes
  [#6178](https://github.com/cypress-io/cypress/issues/6178).
- Fixed an issue where [`cy.wait()`](/api/commands/wait) could yield the
  incorrect result when used with [`cy.intercept()`](/api/commands/intercept)
  and several simultaneous requests. Fixes
  [#16451](https://github.com/cypress-io/cypress/issues/16451).
- Improved the way that [`cy.intercept()`](/api/commands/intercept) matchers are
  displayed in the Command Log when using `RouteMatcher` properties besides
  `url` and `method`. Fixes
  [#9403](https://github.com/cypress-io/cypress/issues/9403).
- [`cy.intercept()`](/api/commands/intercept) argument validation has been
  improved. Invalid hostnames and extra arguments passed to `cy.intercept()` now
  result in an error. Addressed in
  [#16577](https://github.com/cypress-io/cypress/issues/16577).
- [`cy.screenshot()`](/api/commands/screenshot) no longer incorrectly captures
  parts of the Test Runner UI during component testing. Fixes
  [#16543](https://github.com/cypress-io/cypress/issues/16543).
- Spec files that containing spaces in the path will now properly open during
  `cypress open-ct`. Fixes
  [#16278](https://github.com/cypress-io/cypress/issues/16278).
- Cypress now correctly uses the `componentFolder` and `testFiles` values from
  returned from plugins in the component testing runner. Fixes
  [#16424](https://github.com/cypress-io/cypress/issues/16424).
- Video recordings in Chrome, Chromium, and Electron browsers will no longer
  drop frames, with the frequency increasing along with the length of the video.
  Fixes [#16648](https://github.com/cypress-io/cypress/issues/16648).
- Tests located outside of the `projectRoot` will now open in IDE and generate
  studio commands when saved. Fixes
  [#16255](https://github.com/cypress-io/cypress/issues/16255).
- `config` in the plugins file will now display in alphabetical order. Fixes
  [#16564](https://github.com/cypress-io/cypress/issues/16564).

**Dependency Updates:**

- Upgraded `dependency-tree` from `7.0.2` to `8.1.0`. Addressed in
  [#16464](https://github.com/cypress-io/cypress/issues/16464).
- Upgraded `extract-zip` from `1.7.0` to `2.0.1`. Fixes
  [#6896](https://github.com/cypress-io/cypress/issues/6896)

## 7.3.0

_Released 05/10/2021_

**Features:**

- Component tests can now be launched via the
  [Module API](/app/references/module-api) by passing `testingType: 'component'`
  via the new `testingType` property. The `testingType` will default to `e2e`.
  Addresses [#16302](https://github.com/cypress-io/cypress/issues/16302).
- `cy.intercept()` now accepts a `times` option in the `RouteMatcher`. `times`
  will specify the number of times that a particular `cy.intercept()` should be
  applied. Addresses [#4460](https://github.com/cypress-io/cypress/issues/4460)
  and [#8531](https://github.com/cypress-io/cypress/issues/8531).
- `cy.intercept()` now accepts invocation using
  `cy.intercept(url, routeMatcher, handler)`, where `url` is a regular
  expression. Previously, this only worked if `url` was a string. Addresses
  [#16390](https://github.com/cypress-io/cypress/issues/16390).
- Cypress will now automatically get environment variables for LayerCI when
  recording to the Dashboard. Addresses
  [#16101](https://github.com/cypress-io/cypress/issues/16101).
- Setting the env var `DEBUG=cypress:server:record:ci-info` will print commit
  information and CI provider information that's sent to the Dashboard as debug
  logs. Addresses [#16236](https://github.com/cypress-io/cypress/issues/16236).
- Cypress can now use the certificate authority specified in npm config if
  `CYPRESS_DOWNLOAD_USE_CA` is specified. See
  ["Using a custom CA"](/app/references/advanced-installation#Using-a-custom-certificate-authority-CA)
  for more information. Addresses
  [#8825](https://github.com/cypress-io/cypress/issues/8825).

**Bugfixes:**

- Cypress will no longer incorrectly redirect the AUT window to `/__/` when
  `location.href` is set to a relative path within the call stack of an XHR
  event handler. Fixes
  [#3975](https://github.com/cypress-io/cypress/issues/3975) and
  [#7439](https://github.com/cypress-io/cypress/issues/7439).
- Cypress now properly handles when a form submit or anchor tag target is set to
  `_top` or `_parent` so that it no longer redirects the parent frame. Fixes
  [#1244](https://github.com/cypress-io/cypress/issues/1244).
- Fixed a regression in [6.5.0](#6-5-0) that could
  cause Cypress to crash with a
  `RangeError: Maximum call stack size exceeded at _deconstructPacket` error.
  Most commonly, this occurred when handling network errors with `cy.request()`.
  Fixes [#15101](https://github.com/cypress-io/cypress/issues/15101).
- Fixed a regression in [7.0.0](#7-0-0) that caused
  the Test Runner to crash with an `ERR_INVALID_ARG_TYPE` type error when
  testing a binary file upload. Fixes
  [#15898](https://github.com/cypress-io/cypress/issues/15898) and
  [#16223](https://github.com/cypress-io/cypress/issues/16223).
- When verifying Cypress, we now listen for the 'close' event instead of the
  'exit' event in an effort to fix some situations where the browser cannot be
  found even though it is on the system. Addressed in
  [#16312](https://github.com/cypress-io/cypress/issues/16312).
- Fixed a regression in [6.5.0](#6-5-0) that caused
  a node warning about `.then()` only accepting functions to display. Fixes
  [#15281](https://github.com/cypress-io/cypress/issues/15281).
- `cy.intercept()` now adds a `access-control-expose-headers: '*'` header by
  default for CORS requests unless overridden. Fixes
  [#15050](https://github.com/cypress-io/cypress/issues/15050).
- Improved the way that `cy.intercept()` and `cy.route()` requests with multiple
  aliases are displayed in the command log. Addressed in
  [#16382](https://github.com/cypress-io/cypress/issues/16382).
- Cypress now correctly shows all `.should('contain')` assertions when chained
  after `.should('be.visible')`. Fixes
  [#16006](https://github.com/cypress-io/cypress/issues/16006).
- `Cypress.cookies.debug(true)` will now correctly show cookie-related messages
  on the console. Fixes
  [#15032](https://github.com/cypress-io/cypress/issues/15032).
- `cy.log()` will now show all arguments, not only the first 2. Fixes
  [#16068](https://github.com/cypress-io/cypress/issues/16068).
- `.select()` now correctly selects option elements with values that have
  `&nbsp;` characters. Fixes
  [#16045](https://github.com/cypress-io/cypress/issues/16045).
- The `e2e` and `component` configuration values will now correctly show when
  previewing resolved configuration in the Test Runner. Fixes
  [#16282](https://github.com/cypress-io/cypress/issues/16282).
- When passing the `—quiet` flag, Cypress will no longer print uploading output
  to Stdout. Fixes [#16268](https://github.com/cypress-io/cypress/issues/16268).
- When pressing the `/` hotkey in Firefox, Cypress will select the SpecList's
  SearchInput as it does in other browsers. Fixes
  [#16309](https://github.com/cypress-io/cypress/issues/16309).
- Cypress will now detect the default installation location of the Visual Studio
  Code editors on Windows machines. Fixes
  [#15080](https://github.com/cypress-io/cypress/issues/15080).
- Changing files extensions when creating a new test file should no longer add
  extra dots to the filename on Windows machines. Fixes
  [#16131](https://github.com/cypress-io/cypress/issues/16131).

**Dependency Updates:**

- Upgraded `classnames` from `2.2.6` to `2.3.1`. Addressed in
  [#8337](https://github.com/cypress-io/cypress/issues/8337).
- Upgraded `color-string` from `1.5.4` to `1.5.5`. Addressed in
  [#16362](https://github.com/cypress-io/cypress/issues/16362).
- Upgraded `lodash` from `4.17.19` to `4.17.21`. Addressed in
  [#16406](https://github.com/cypress-io/cypress/issues/16406).
- Upgraded `registry-js` from `1.13.0` to `1.15.0`. Addressed in
  [#16409](https://github.com/cypress-io/cypress/issues/16409).
- Upgraded `url-parse` from `1.4.7` to `1.5.0`. Addressed in
  [#16408](https://github.com/cypress-io/cypress/issues/16408).

## 7.2.0

_Released 04/26/2021_

**Features:**

- You can now navigate through folders in the Test Runner using the Tab keyboard
  input and open or close the folder's content with the Enter & Space keyboard
  inputs. Addresses [#3741](https://github.com/cypress-io/cypress/issues/3741).

**Performance:**

- Fixed a regression in [7.0.0](#7-0-0) that caused
  tests to run slowly, especially when run with constrained CPU resources. Fixes
  [#15853](https://github.com/cypress-io/cypress/issues/15853).
- Fixed a regression in [7.0.0](#7-0-0) causing
  decreased performance in Chromium browsers due to requesting screencast frames
  when video is disabled. Fixes
  [#16030](https://github.com/cypress-io/cypress/issues/16030).

**Bugfixes:**

- Fixed a regression in [7.0.0](#7-0-0) that caused
  the Test Runner to crash with an `ERR_INVALID_ARG_TYPE` type error. We now
  correctly detect a utf8 request body with multi-byte Unicode characters. Fixes
  [#15901](https://github.com/cypress-io/cypress/issues/15901).
- Reusing `cy.intercept()` aliases will now work as expected. Fixes
  [#15823](https://github.com/cypress-io/cypress/issues/15823).
- Fixed an issue in 7.0 where users could get a misleading "must pass a handler
  as the 3rd argument" error when using `cy.intercept`. Fixes
  [#16117](https://github.com/cypress-io/cypress/issues/16117).
- `cypress run-ct` no longer hangs on Windows machines. Fixes
  [#15976](https://github.com/cypress-io/cypress/issues/15976).
- Hovering over a command log without a snapshot will no longer cause the error
  `Cannot read property 'name' of null`. Fixes
  [#15816](https://github.com/cypress-io/cypress/issues/15816).
- We now throw an error when attempting to `.select()` an `<option>` within a
  disabled `<fieldset>`. Fixes
  [#5951](https://github.com/cypress-io/cypress/issues/5951).
- `.type()` will no longer change the `value` attribute of button-like inputs
  with type button, submit, reset, image, radio, or checkbox. Fixes
  [#15913](https://github.com/cypress-io/cypress/issues/15913).
- Specs will now load when using a relative directory for `componentFolder`
  outside of the root project when specifying `--project`. Fixes
  [#16053](https://github.com/cypress-io/cypress/issues/16053).
- The search input will now display when there are many component spec files.
  Fixes [#16089](https://github.com/cypress-io/cypress/issues/16089).

**Misc:**

- Lodash types have been updated. Addressed in
  [#15860](https://github.com/cypress-io/cypress/issues/15860).
- Types for the selector playground have been added. Addressed in
  [#15834](https://github.com/cypress-io/cypress/issues/15834).
- `Cypress.Cookies.defaults()` now returns the correct type instead of `void`.
  Addresses [#15426](https://github.com/cypress-io/cypress/issues/15426).
- `.then()` will show the correct type when a collection of HTMLElements is
  provided. Addressed in
  [#15869](https://github.com/cypress-io/cypress/pull/15869).
- Improved types for `cy.intercept()`. Addressed in
  [#16167](https://github.com/cypress-io/cypress/pull/16167).

**Dependency Updates:**

- Downgraded the Chromium browser version used during `cypress run` and when
  selecting Electron browser in `cypress open` from `89.0.4348.1` to
  `89.0.4328.0`. This was done to address a performance regression introduced in
  [7.0.0](#7-0-0). Addressed in
  [#16113](https://github.com/cypress-io/cypress/pull/16113).
- Upgraded `systeminformation` from `5.3.1` to `5.6.4`. Addressed in
  [#15819](https://github.com/cypress-io/cypress/issues/15819).
- Replaced `lolex` with `@sinonjs/fake-timers`. Addressed in
  [#15595](https://github.com/cypress-io/cypress/issues/15595).

## 7.1.0

_Released 04/12/2021_

**Features:**

- The events `before:spec`, `after:spec`, `before:run`, and `after:run` now fire
  in interactive mode in addition to run mode. This requires the
  `experimentalInteractiveRunEvents` flag to be enabled. Addressed in
  [#15787](https://github.com/cypress-io/cypress/pull/15787).

**Bugfixes:**

- Viewport configuration set in `cypress.json` is now correctly applied in the
  Component Test Runner. Fixes
  [#15899](https://github.com/cypress-io/cypress/issues/15899).
- Running specs on Windows is now supported in the Component Test Runner. Fixes
  [#15842](https://github.com/cypress-io/cypress/issues/15842).
- Fixed an issue where crashes in Cypress would cause a misleading "Unknown
  signal: true" error after the actual crash message. Fixes
  [#15943](https://github.com/cypress-io/cypress/issues/15943).
- Fixed an issue introduced in [7.0.0](#7-0-0) where requests with responses stubbed via
  `cy.intercept(routeMatcher, staticResponse)` would still be sent to the
  destination server. Fixes
  [#15841](https://github.com/cypress-io/cypress/issues/15841).

## 7.0.1

_Released 04/07/2021_

**Bugfixes:**

- Fixed a regression in [7.0.0](#7-0-0) that caused the test runner not to check for
  updates. Fixes [#15829](https://github.com/cypress-io/cypress/issues/15829).
- The component testing spec list search input no longer throws an exception
  when hitting `Enter`. Addressed in
  [#15833](https://github.com/cypress-io/cypress/pull/15833).
- The preferred file opener modal no longer appears behind the command log.
  Addressed in [#15831](https://github.com/cypress-io/cypress/pull/15831).
- Cypress no longer crashes in certain circumstances when running in Docker
  without `--ipc=host`. Fixes
  [#15814](https://github.com/cypress-io/cypress/issues/15814) and
  [#350](https://github.com/cypress-io/cypress/issues/350).
- Node.js warnings are no longer incorrectly printed to `stderr` in production
  builds of Cypress. Addressed in
  [#15817](https://github.com/cypress-io/cypress/pull/15817).
- Cypress no longer prints a warning to `stdout` when the video cannot be found
  after a run. Addressed in
  [#15828](https://github.com/cypress-io/cypress/pull/15828).
- A warning is no longer displayed when running a TypeScript spec without a
  `tsconfig.json` file present. Addressed in
  [#15828](https://github.com/cypress-io/cypress/pull/15828).

**Misc:**

- The "New Spec File" in the Desktop GUI has a less pronounced style. Addressed
  in [#15835](https://github.com/cypress-io/cypress/pull/15835).

## 7.0.0

_Released 04/05/2021_

**Summary:**

🎉 Introducing the **Cypress Component Test Runner** - now in alpha. Today's
release includes a brand new test runner designed to replace your Node-based
component tests. Our Component Test Runner tests your components in the browser,
just like a user would. And, since it runs in the browser, you get to debug your
components using your favorite developer tools. Read our
[Component Testing Guide](/app/component-testing/get-started) for more details.

**Breaking Changes:**

<Icon name="exclamation-triangle" color="red" /> Please read our [Migration Guide](/app/references/migration-guide)
which explains the changes in more detail and how to change your code to migrate
to Cypress 7.0.**

- We introduced several breaking changes to
  [cy.intercept()](/api/commands/intercept). See the
  [cy.intercept()](/api/commands/intercept) docs for full usage examples.
  Breaking changes:
  - Request handlers supplied to `cy.intercept()` are now matched starting with
    the most recently defined request interceptor. This allows users to override
    request handlers by calling `cy.intercept()` again. This matches the
    previous behavior that was default in `cy.route()`. Addresses
    [#9302](https://github.com/cypress-io/cypress/issues/9302).
  - `cy.intercept()` now automatically parses more JSON MIME types, including
    'application/vnd.api+json'. You can now remove `JSON.parse(req.body)` or
    `JSON.parse(res.body)` from some tests that previously required it.
    Addresses [#14763](https://github.com/cypress-io/cypress/issues/14763).
  - Falsy values (with the exception of `undefined`) supplied as the body of a
    `StaticResponse` to `cy.intercept()` will now be JSONified and sent as the
    body. Previously, an empty string was sent instead. Addresses
    [#15234](https://github.com/cypress-io/cypress/issues/15234) and
    [#14205](https://github.com/cypress-io/cypress/issues/14205).
  - The `matchUrlAgainstPath` `RouteMatcher` property has been removed from
    `cy.intercept()`.
  - The "substring match" from `cy.intercept()` URL matching has been removed.
    Previously, a URL would match if it contained the supplied string anywhere.
    Now, the URL (including querystring) only matches if it is an equality match
    or a minimatch.
  - `res.delay()` and `res.throttle()` have been renamed to `res.setDelay()` and
    `res.setThrottle()`, respectively. Addresses
    [#15700](https://github.com/cypress-io/cypress/issues/15700).
  - `cy.route2()` was previously aliased to `cy.intercept()`. Now the alias
    `cy.route2()` has been removed. Please update usage of `cy.route2()` to
    `cy.intercept()`. Addressed in
    [#14709](https://github.com/cypress-io/cypress/pull/14709).
- Component tests have been migrated to use a dedicated test runner and are
  bundled differently. See the
  [Migration Guide](/app/references/migration-guide#Component-Testing) for
  full examples on how to migrate. Addressed in
  [#14479](https://github.com/cypress-io/cypress/pull/14479).
  - Component tests will not be executed when running `cypress open` or
    `cypress run`. Now, they need to be executed by running `cypress open-ct` or
    `cypress run-ct`. Addressed in
    [#15701](https://github.com/cypress-io/cypress/pull/15701).
  - `experimentalComponentTesting` must be removed from your configuration file,
    `cypress.json` by default, or it will throw an error. Addressed in
    [#15701](https://github.com/cypress-io/cypress/pull/15701).
  - The `file:preprocessor` event is no longer used to compile component tests.
    Now, a `dev-server:start` event must be registered.
- Cypress now catches uncaught errors and fails the test even if the application
  under test has defined `window.onerror`. Addresses
  [#8802](https://github.com/cypress-io/cypress/pull/8802).
- Cypress now fails tests if there is an unhandled promise rejection in the
  application under test. Unhandled rejections will trigger the
  `uncaught:exception` event with the promise as the third argument. Addresses
  [#243](https://github.com/cypress-io/cypress/issues/243).
- Cypress now throws an error if the application under test redirects more than
  20 times. The number of times allowed to redirect is configurable via the
  [`redirectionLimit`](/app/references/configuration#Global) config. Addresses
  [#14445](https://github.com/cypress-io/cypress/issues/14445).
- The default preprocessor now targets a more modern version of ECMAScript.
  Addressed in [#15274](https://github.com/cypress-io/cypress/pull/15274).
- We now enable
  [`contextIsolation`](https://www.electronjs.org/docs/tutorial/context-isolation)
  by default in the Electron browser. You can override this option if needed
  within the `before:browser:launch` API. Addressed in
  [#15493](https://github.com/cypress-io/cypress/pull/15493).
- `Cypress.moment()` has been removed. Please migrate to a different datetime
  formatter. See
  [our recipe](https://github.com/cypress-io/cypress-example-recipes/tree/master/examples/blogs__dayjs)
  for example replacements. Addresses
  [#8714](https://github.com/cypress-io/cypress/issues/8714).
- The bundled Node.js version was upgraded from `12.18.3` to `14.16.0`. This
  could change the behavior of code within the `pluginsFile` when using the
  bundled Node.js version of
  Cypress. Addressed in
  [#15292](https://github.com/cypress-io/cypress/pull/15292).
- Installing Cypress on your system now requires Node.js 12+. Addresses
  [#9545](https://github.com/cypress-io/cypress/issues/9545).
- The default headless browser window size has been increased to 1920x1080
  pixels to capture
  [High-definition videos and screenshots](https://www.cypress.io/blog/2021/03/01/generate-high-resolution-videos-and-screenshots/).
  Addresses [#15752](https://github.com/cypress-io/cypress/issues/15752),
  [#15730](https://github.com/cypress-io/cypress/issues/15730), and
  [#15481](https://github.com/cypress-io/cypress/issues/15481).

**Features:**

- A command log entry is now displayed when there is an uncaught exception or
  unhandled rejection. Addresses
  [#8236](https://github.com/cypress-io/cypress/issues/8236).
- We added several features to [cy.intercept()](/api/commands/intercept). See
  the [cy.intercept()](/api/commands/intercept) docs for full usage examples.
  Addressed in [#14543](https://github.com/cypress-io/cypress/pull/14543). New
  features:
  - There are new events on the req object for `cy.intercept()` including
    `before:response`, `response`, and `after:response`.
  - Response handlers (supplied via event handlers or via `req.continue(cb)`)
    supplied to `cy.intercept()` will be called in reverse order until
    `res.send` is called or until there are no more response handlers.
  - A new option, `middleware`, has been added to the `RouteMatcher` type. If
    true, the supplied request handler will be called before any non-middleware
    request handlers.
  - A new function, `req.continue(cb)`, is available on request objects yielded
    by `cy.intercept()`. It is functionally the same as `req.reply(cb)` - the
    request will stop propagating to other event handlers, will be sent
    outgoing, and the response will be handled by cb.
  - `cy.intercept()` can now be called with a new overload:
    `cy.intercept(url, routeMatcher, handler)`. `routeMatcher` will be merged
    with `url`, and the handler is required.
- [`cy.visit()`](/api/commands/visit) can now visit pages with
  `application/xhtml*` content-type. Addresses
  [#15738](https://github.com/cypress-io/cypress/issues/15738).
- You can now pass runner specific configuration in order to pass different
  configuration values to `component` tests versus `e2e` tests. Addressed in
  [#15526](https://github.com/cypress-io/cypress/pull/15526).
- There's a new keyboard shortcut (`ctrl/cmd + f`) to search spec files in the
  Test Runner based on your OS. Addresses
  [#6229](https://github.com/cypress-io/cypress/issues/6229).
- You can now create a new spec file directly from the Test Runner in the
  Desktop. Addressed in
  [#15335](https://github.com/cypress-io/cypress/issues/15335).
- [`cy.tick()`](/api/commands/tick) now accepts a `log` option. Addresses
  [#15180](https://github.com/cypress-io/cypress/issues/15180).
- The Cypress proxy now adds a `keep-alive` header to all proxy responses.
  Addressed in [#15292](https://github.com/cypress-io/cypress/pull/15292)
- Cypress no longer forces specific `NODE_OPTIONS`. Addressed in
  [#15292](https://github.com/cypress-io/cypress/pull/15292)

**Bugfixes:**

- The `response.body` of [`cy.intercept()`](/api/commands/intercept) is now
  correct after stubbing a response using `res.send({ fixture })` in a
  `req.continue` callback or a `before:response` or `response` handler.
  Addressed in [#14543](https://github.com/cypress-io/cypress/pull/14543).
- Fixed an issue where only the first matching alias for a route would yield a
  response object on [`cy.wait()`](/api/commands/wait). Fixes
  [#14522](https://github.com/cypress-io/cypress/issues/14522).
- [`.click()`](/api/commands/click) will no longer fail with "coordsHistory must
  be at least 2 sets of coords" when specifying `{ multiple: true }`. Fixes
  [#3738](https://github.com/cypress-io/cypress/issues/3738).
- Cypress now checks visibility correctly when an element has CSS "position:
  sticky". Fixes [#14938](https://github.com/cypress-io/cypress/issues/14938).
- After selecting a project in global mode and clicking the back button, Cypress
  will no longer crash. Fixes
  [#15089](https://github.com/cypress-io/cypress/issues/15089).
- Errors `Refused to apply style` are gone from the console in `open-ct` during
  Component Testing. Addressed in
  [#15661](https://github.com/cypress-io/cypress/issues/15661).
- Some memory leaks were fixed in `@cypress/vue`. Addressed in
  [#15275](https://github.com/cypress-io/cypress/issues/15275).

**Misc:**

- The types for `set-cookie` allow `string[]`, so the header's type has been
  changed to reflect this. Addresses
  [#15419](https://github.com/cypress-io/cypress/pull/15419).
- The type definition for [`cy.writeFile()`](/api/commands/writefile) now allows
  4 arguments. Addresses
  [#15353](https://github.com/cypress-io/cypress/issues/15353).
- [`.then()`](/api/commands/then) will show the correct type when raw
  HTMLElements are provided. Addresses
  [#14875](https://github.com/cypress-io/cypress/issues/14875)
- The Cypress Studio icon now displays properly for tests with long titles.
  Addresses [#15182](https://github.com/cypress-io/cypress/issues/15182).
- There were some minor improvements made to the UI when setting up a project in
  the Test Runner. Addressed in
  [#15665](https://github.com/cypress-io/cypress/pull/15665).

**Dependency Updates**

- Upgraded Chrome browser version used during `cypress run` and when selecting
  Electron browser in `cypress open` from `87` to `89`. Addressed in
  [#15292](https://github.com/cypress-io/cypress/pull/15292).
- Upgraded bundled Node.js version from `12.18.3` to `14.16.0`. Addressed in
  [#15292](https://github.com/cypress-io/cypress/pull/15292).
- Upgraded `electron` from `11.3.0` to `12.0.0`. Addressed in
  [#15292](https://github.com/cypress-io/cypress/pull/15292).

## 6.9.1

_Released 04/05/2021_

This release contains the same features as [6.8.0](#6-8-0). It was published to provide a
non-breaking alternative to [6.9.0](#6-9-0), which was mistakenly published with breaking
changes.

## 6.9.0

_Released 04/05/2021_

This release was mistakenly published with breaking changes, is deprecated, and
should not be used. Upgrade to [6.9.1](#6-9-1) or [7.0.0](#7-0-0), or stay on [6.8.0](#6-8-0).

## 6.8.0

_Released 03/17/2021_

**User Experience:**

- Improved the specs list user interface with a new icon set and accessibility
  features when in [Component Testing](/app/component-testing/get-started) mode
  (alpha). Addressed in
  [#15513](https://github.com/cypress-io/cypress/issues/15513)

**Bugfixes:**

- Cypress will no longer exit with an error when recording a run to the
  Dashboard with empty specfiles. Fixes
  [#15512](https://github.com/cypress-io/cypress/issues/15512).
- When using `experimentalStudio`,
  [Cypress Studio](/app/guides/cypress-studio) the icon to add commands
  will now fully display on long test titles. Fixes
  [#15182](https://github.com/cypress-io/cypress/issues/15182).

## 6.7.1

_Released 03/15/2021_

**Bugfixes:**

- Interacting with an element that requires scrolling within an element with
  `scroll-behavior: smooth` no longer fails Cypress's actionability check. Fixes
  [#15453](https://github.com/cypress-io/cypress/issues/15453).
- A regression in [6.7.0](#6-7-0) has been fixed so that the `projectId` will be
  written correctly to the `cypress.json` file on initial creation without an
  extra config object. Fixes
  [#15497](https://github.com/cypress-io/cypress/issues/15497).

## 6.7.0

_Released 03/15/2021_

**Features:**

- The `experimentalRunEvents` configuration flag has been removed. You can now
  listen to `before:run`, `after:run`, `before:spec` and `after:spec` events in
  the plugins file without needing the
  [experimentalRunEvents](/app/references/experiments) configuration option.
  See the [`before:run`](/api/node-events/before-run-api),
  [`after:run`](/api/node-events/after-run-api),
  [`before:spec`](/api/node-events/before-spec-api) and
  [`after:spec`](/api/node-events/after-spec-api) docs for more information.
  Addressed in [#15276](https://github.com/cypress-io/cypress/pull/15276).
- When canceling a run from the Dashboard, previously only parallelized runs
  would cancel correctly. Now all recorded runs will respect cancelation and
  exit early. Addresses
  [#1691](https://github.com/cypress-io/cypress/issues/1691).
- [Test configuration](/app/core-concepts/writing-and-organizing-tests#Test-Configuration)
  is now captured and sent when recording to the Dashboard. Addresses
  [#15487](https://github.com/cypress-io/cypress/issues/15487).
- Cypress now sends test details to the Dashboard at the beginning of a recorded
  run, so historical test code and other data can be provided to the Dashboard
  upfront. Addressed in
  [#14925](https://github.com/cypress-io/cypress/issues/14925).
- The full stack trace from errors thrown in the preprocessor are now displayed.
  Addressed in [#15198](https://github.com/cypress-io/cypress/pull/15198).
- Configuration values which are changed at runtime prior to tests running are
  now properly shown as resolved from the spec code within the Module API to
  indicate where the change originated from. Addresses
  [#15486](https://github.com/cypress-io/cypress/issues/15486).

**Bugfixes:**

- FFmpeg will no longer error ("width not divisible by 2") during video
  recording in Chromium-family browsers, including Chrome, Electron, and Edge.
  Fixes [#3491](https://github.com/cypress-io/cypress/issues/3491) and
  [#15300](https://github.com/cypress-io/cypress/issues/15300).
- [cy.wait()](/api/commands/wait) no longer falsely returns a timeout when the
  user aborts an XHR. Fixes
  [#9549](https://github.com/cypress-io/cypress/issues/9549).
- [.clear()](/api/commands/clear) and
  [`.type('{selectall}{del}')`](/api/commands/type) now behave the same when
  they're used against elements that contain text inputs. Fixes
  [#8447](https://github.com/cypress-io/cypress/issues/8447).
- When using `experimentalStudio`,
  [Cypress Studio](/app/guides/cypress-studio) now records typing by
  using the value of the input rather than the keys that were pressed. Studio
  also no longer records pressing special keys (such as arrows or ctrl) except
  for Enter. Fixes [#15023](https://github.com/cypress-io/cypress/issues/15023).
- Empty jQuery objects are now properly shown in error messages in the Command
  Log. Fixes [#14279](https://github.com/cypress-io/cypress/issues/14279).
- Length assertions on DOM elements now properly show the user-defined assertion
  message if specified. Fixes
  [#14484](https://github.com/cypress-io/cypress/issues/14484).
- Cypress no longer scrolls on `mouse down` event, fixes
  [#8279](https://github.com/cypress-io/cypress/issues/8279).

**Misc:**

- We updated the UI when connecting a project to the Dashboard. Addressed in
  [#14877](https://github.com/cypress-io/cypress/issues/14877).
- "Test recordings" recorded to the Cypress Dashboard are now referred to as
  recorded "test results." Addresses
  [#15376](https://github.com/cypress-io/cypress/issues/15376).
- Errors shown from the plugins file now display top-aligned. Addressed in
  [#15347](https://github.com/cypress-io/cypress/issues/15347).

**Dependency Updates:**

- Upgraded `electron` from `11.2.3` to `11.3.0`. Addressed in
  [#15201](https://github.com/cypress-io/cypress/issues/15201).

## 6.6.0

_Released 02/18/2021_

**Features:**

- Cypress now extracts and sends CodeFresh CI default variables when recording
  to the Dashboard. Addresses
  [#4609](https://github.com/cypress-io/cypress/issues/4609)

**Dependency Updates:**

- Upgraded `ramda` to version `0.27.1`. Addressed in
  [#14958](https://github.com/cypress-io/cypress/issues/14958).

## 6.5.0

_Released 02/15/2021_

**Performance:**

- Improved the startup time of `cypress open` and `cypress run`. Addresses
  [#15075](https://github.com/cypress-io/cypress/issues/15075).

**Bugfixes:**

- Fixed an issue where tests would display as failed if an event (such as an XHR
  request) failed after the test was already completed. This only affects the
  display of the test and not what was reported in run mode, so it would not
  have had an effect on suites running in CI. Addresses
  [#14978](https://github.com/cypress-io/cypress/issues/14978).
- Fixed a regression introduced in [6.4.0](#6-4-0) that caused Electron to crash when
  opening outside links in the Command Log. Addresses
  [#14912](https://github.com/cypress-io/cypress/issues/14912).
- Fixed an issue where browser paths with double backslashes would not work as
  expected on Windows. Addresses
  [#14719](https://github.com/cypress-io/cypress/issues/14719).
- Fixed Microsoft Edge browser detection when passing a path on Windows.
  Addresses [#14716](https://github.com/cypress-io/cypress/issues/14716).
- Fixed an issue where the types for `Cypress.on` did not support chaining.
  Addresses [#14991](https://github.com/cypress-io/cypress/issues/14991).
- Fixed an issue where, when installing two Cypress instances simultaneously,
  the downloaded `.zip` could become corrupted and break the install process.
  Addresses [#4595](https://github.com/cypress-io/cypress/issues/4595).

**Misc:**

- Expanded search bar in desktop GUI to fill the entire width. Addresses
  [#14830](https://github.com/cypress-io/cypress/issues/14830).
- Added `autoEnd` to the types for `LogConfig`. Addresses
  [#9590](https://github.com/cypress-io/cypress/issues/9590).
- We collect more variables from Bitbucket pipelines to correctly display the
  pull request information in the Dashboard. Addresses
  [#15081](https://github.com/cypress-io/cypress/issues/15081).

**Dependency Updates:**

- Upgraded `electron` to version `11.2.3`. Addresses
  [#15056](https://github.com/cypress-io/cypress/issues/15056).

## 6.4.0

_Released 02/01/2021_

**Features:**

- There's now a [Command Log](/app/core-concepts/open-mode#Command-Log)
  entry in the Test Runner for when a file is downloaded. Addresses
  [#14749](https://github.com/cypress-io/cypress/issues/14749).

**Deprecations:**

- The `delayMs` option for [cy.intercept()](/api/commands/intercept) has been
  renamed to `delay`. `delayMs` will still work, but it is deprecated and will
  be removed in a future release. Addresses
  [#14822](https://github.com/cypress-io/cypress/issues/14822).

**Bugfixes:**

- Fixed an issue causing a webpack compilation error when a `browserslist` is
  present in project root. Addresses
  [#8864](https://github.com/cypress-io/cypress/issues/8864).
- Fixed an issue with [cy.intercept()](/api/commands/intercept) where aliases
  set via `req.alias` containing a period character would not work as expected.
  Addresses [#14444](https://github.com/cypress-io/cypress/issues/14444).
- Fixed an issue where delays set using
  [cy.intercept()](/api/commands/intercept) would not work as expected.
  Addresses [#14446](https://github.com/cypress-io/cypress/issues/14446) and
  [#14511](https://github.com/cypress-io/cypress/issues/14511).
- Reverted a change to how the Chrome DevTools Protocol is established. Instead
  of using stdio and then falling back to TCP, Cypress now only uses TCP to try
  to connect to Chrome DevTools Protocol. Addresses
  [#14819](https://github.com/cypress-io/cypress/issues/14819).
- We now better handle spec paths containing special characters so they properly
  show in the code frame and work when interacting via your IDE. Addresses
  [#14659](https://github.com/cypress-io/cypress/issues/14659).
- We addressed several issues with the experimental
  [Cypress Studio](/app/guides/cypress-studio). To enable the Cypress
  Studio you can set `experimentalStudio` to `true` in your Cypress
  configuration. Issues addressed:
  - Cypress Studio now prompts to start adding commands after visiting an
    inputted url. Addresses
    [#14688](https://github.com/cypress-io/cypress/issues/14688).
  - Empty `.type()` commands will no longer be generated when tabbing through
    inputs. Addresses
    [#14684](https://github.com/cypress-io/cypress/issues/14684).
  - Cypress Studio no longer prompt to enter a URL if the test is in an errored
    state. Addresses
    [#14686](https://github.com/cypress-io/cypress/issues/14686).
  - Cypress Studio now reloads tests when `watchForFileChanges` is `false`.
    Addresses [#14744](https://github.com/cypress-io/cypress/issues/14744).
  - An empty `.click()` command will no longer be added before `.type()` in
    Cypress Studio when it is followed by typed characters. Addresses
    [#14685](https://github.com/cypress-io/cypress/issues/14685).
  - Cypress Studio will now use the correct selector for an element even if the
    click event changed the selectors. Addresses
    [#14658](https://github.com/cypress-io/cypress/issues/14658).
  - Multi-select `selects` are now supported in Cypress Studio. Addresses
    [#14743](https://github.com/cypress-io/cypress/issues/14743).
  - There's an improved UI for command failures within Cypress Studio. Addresses
    [#14691](https://github.com/cypress-io/cypress/issues/14691).
  - The Selector Playground is now closed automatically when Cypress Studio is
    opened. [#14689](https://github.com/cypress-io/cypress/issues/14689).

**Misc:**

- The "no specs found" error now displays which directory it searched for specs.
  Addresses [#14532](https://github.com/cypress-io/cypress/issues/14532).
- More types for the resolved config property have been added. Addresses
  [#14392](https://github.com/cypress-io/cypress/issues/14392).

**Dependency Updates:**

- Upgraded `@cypress/get-windows-proxy` to version `1.6.2`. Addressed in
  [#14711](https://github.com/cypress-io/cypress/issues/14711).
- Upgraded `electron` to version `11.2.1`. Addressed in
  [#14764](https://github.com/cypress-io/cypress/issues/14764).
- Upgraded `recast` to version `0.20.4`. Addressed in
  [#14623](https://github.com/cypress-io/cypress/issues/14623).
- Upgraded `registry-js` to version `1.13.0`. Addressed in
  [#14668](https://github.com/cypress-io/cypress/issues/14668).
- Upgraded `semantic-release` to version `17.2.3`. Addressed in
  [#14713](https://github.com/cypress-io/cypress/issues/14713).
- Upgraded `systeminformation` to version `4.31.1`. Addressed in
  [#14715](https://github.com/cypress-io/cypress/issues/14715).

## 6.3.0

_Released 01/19/2021_

**Features:**

- [**Cypress Studio**](/app/guides/cypress-studio) provides a visual way
  to generate tests within the Test Runner, by _recording interactions_ against
  the application under test. Cypress Studio is an experimental feature that can
  be enabled by adding the [experimentalStudio](/app/references/experiments)
  attribute to your configuration, `cypress.json` by default. Address
  [#73](https://github.com/cypress-io/cypress/issues/73).
- **You can now test file downloads in Cypress** without the download prompt
  displaying. Any files downloaded while testing file downloads will be stored
  in the [downloadsFolder](/app/references/configuration#Downloads) which is
  set to `cypress/downloads` by default. The `downloadsFolder` will be deleted
  before each run unless
  [trashAssetsBeforeRuns](/app/references/configuration#Downloads) is set to
  `false`. Addresses [#949](https://github.com/cypress-io/cypress/issues/949).

**Bugfixes:**

- When an uncaught exception is thrown outside a suite with an `.only`, the
  error will now correctly display in the Command Log. Fixes
  [#14455](https://github.com/cypress-io/cypress/issues/14455).
- Cypress will no longer crash when no record key is provided to the `--key`
  flag when followed by other CLI flags. Fixed
  [#14593](https://github.com/cypress-io/cypress/issues/14593).
- Extra screenshots will no longer be taken when tests are retried when there is
  a failure in an `afterEach` hook. Fixes
  [#9209](https://github.com/cypress-io/cypress/issues/9209).
- Having `waitForAnimations` set to `false` no longer affects whether Cypress
  fires actions on inner elements. Fixes
  [#14370](https://github.com/cypress-io/cypress/issues/14370).
- We fixed a regression in [5.0.0](#5-0-0) that would cause string `CYPRESS_`
  prefixed env variables containing commas to be parsed as multiple values.
  Fixes [#8818](https://github.com/cypress-io/cypress/issues/8818).
- We fixed a regression in [4.9.0](#4-9-0) where asserting `have.value` on an
  undefined subject would throw an error. Fixes
  [#14359](https://github.com/cypress-io/cypress/issues/14359).
- We updated the CDP connection to attempt to use the stdio transport first with
  Chrome 72 and above, before falling back to using TCP. This should remediate
  issues causing sporadic "Cypress failed to make a connection to the Chrome
  DevTools Protocol after retrying" errors. Fixes
  [#6540](https://github.com/cypress-io/cypress/issues/6540),
  [#7450](https://github.com/cypress-io/cypress/issues/7450),
  [#8674](https://github.com/cypress-io/cypress/issues/8674), and
  [#8986](https://github.com/cypress-io/cypress/issues/8986).

**Misc:**

- We removed several Chrome flags that are no longer supported. Addressed in
  [#14582](https://github.com/cypress-io/cypress/issues/14582).
- You can now open the actively running spec file in your IDE. Addressed in
  [#14521](https://github.com/cypress-io/cypress/issues/14521).

**Dependency Updates:**

- Replaced deprecated `node-sass` with `sass`. Addressed in
  [#14415](https://github.com/cypress-io/cypress/pull/14415).
- Upgraded `debug` from `4.1.1` to `4.3.1`. Addressed in
  [#14583](https://github.com/cypress-io/cypress/issues/14583).
- Upgraded `electron` from `11.0.3` to `11.2.0`. Addressed in
  [#14567](https://github.com/cypress-io/cypress/issues/14567).
- Upgraded `electron-builder` from `22.8.0` to `22.9.1`. Addressed in
  [#14493](https://github.com/cypress-io/cypress/issues/14493).
- Upgraded `shell-env` from `3.0.0` to `3.0.1`. Addressed in
  [#14622](https://github.com/cypress-io/cypress/issues/14622).
- Upgraded `uuid` from `8.2.0` to `8.3.2`. Addressed in
  [#14170](https://github.com/cypress-io/cypress/issues/14170).

## 6.2.1

_Released 01/04/2021_

**Bugfixes:**

- Test retries, when retrying on several failed tests, will no longer cause
  hanging during `cypress run`. Fixes
  [#9040](https://github.com/cypress-io/cypress/issues/9040).
- `multipart/form-data` is no longer wrongly encoded when using
  [cy.intercept()](/api/commands/intercept). This should prevent
  `Unexpected end of multipart data` errors on the back end service where the
  request was pointing to. Fixes
  [#9359](https://github.com/cypress-io/cypress/issues/9359).
- [cy.contains()](/api/commands/contains) no longer throws an error when a
  single quote is used inside its argument when RegExp. Fixes
  [#8626](https://github.com/cypress-io/cypress/issues/8626).
- Passing `capture: 'runner'` to a [cy.screenshot()](/api/commands/screenshot)
  command inside [.within()](/api/commands/within) now screenshots the entire
  Test Runner as expected. Fixes
  [#14253](https://github.com/cypress-io/cypress/issues/14253).
- [Cypress.dom.isJquery()](/api/cypress-api/dom#Is-jQuery) now always returns a
  boolean instead of `undefined` sometimes. Fixes
  [#14278](https://github.com/cypress-io/cypress/issues/14278).
- `calledOnceWith` and `calledOnceWithExactly` sinon matchers no longer throw an
  error when used within Cypress. Fixes
  [#9644](https://github.com/cypress-io/cypress/issues/9644).
- We now pass `--disable-backgrounding-occluded-windows` as a default flag to
  Chrome to prevent backgrounding rendering when the Cypress window is occluded.
  Fixes [#9604](https://github.com/cypress-io/cypress/issues/9604).

**Misc:**

- After login, if a name is undefined on your profile, the Test Runner will show
  the profile's email and link to instructions to update the name. Addresses
  [#14288](https://github.com/cypress-io/cypress/issues/14288).

**Dependency Updates:**

- Upgraded `devtools-protocol` from `0.0.734984` to `0.0.839267`. Addressed in
  [#14353](https://github.com/cypress-io/cypress/issues/14353).
- Upgraded `electron` from `11.0.3` to `11.1.1`. Addressed in
  [#14352](https://github.com/cypress-io/cypress/issues/14352).

## 6.2.0

_Released 12/21/2020_

**Features:**

- You can now listen to `before:run`, `after:run`, `before:spec` and
  `after:spec` events in the plugins file when setting the
  [experimentalRunEvents](/app/references/experiments) configuration option
  to `true`. See the [`before:run`](/api/node-events/before-run-api),
  [`after:run`](/api/node-events/after-run-api),
  [`before:spec`](/api/node-events/before-spec-api) and
  [`after:spec`](/api/node-events/after-spec-api) docs for more information.
  Addressed in [#9646](https://github.com/cypress-io/cypress/pull/9646),
  [#14178](https://github.com/cypress-io/cypress/pull/14178)
  [#14238](https://github.com/cypress-io/cypress/pull/14238) and
  [#14263](https://github.com/cypress-io/cypress/pull/14263).
- The `Timed out retrying` error message now displays the amount of time Cypress
  retried. Addresses [#5781](https://github.com/cypress-io/cypress/issues/5781).
- The RouteMatcher argument for [cy.intercept()](/api/commands/intercept) has a
  new `matchUrlAgainstPath` property. When set to `true`, Cypress will match the
  supplied `url` against incoming `path`s. Addressed in
  [#14241](https://github.com/cypress-io/cypress/issues/14241).

**Bugfixes:**

- Passing a URL as a string or RegExp to
  [cy.intercept()](/api/commands/intercept) will automatically set
  `matchUrlAgainstPath` to `true`. This means that the supplied string or RegExp
  will be matched against the **path** if matching against the **URL** fails.
  Fixes [#9379](https://github.com/cypress-io/cypress/issues/9379) and
  [#14256](https://github.com/cypress-io/cypress/issues/14256).
- Getting an alias of [cy.intercept()](/api/commands/intercept) using
  [cy.get()](/api/commands/get) will no longer always yield `null`. Fixes
  [#9306](https://github.com/cypress-io/cypress/issues/9306).
- [cy.intercept()](/api/commands/intercept) will now automatically responds to
  CORS preflight requests (HTTP `OPTIONS` requests) that match defined routes.
  Fixes [#9599](https://github.com/cypress-io/cypress/issues/9599).
- Response errors from `forceNetworkError` can now be awaited using
  [cy.intercept()](/api/commands/intercept) and [cy.wait()](/api/commands/wait).
  Fixes [#9062](https://github.com/cypress-io/cypress/issues/9062).
- Using [cy.log()](/api/commands/log) inside [.then()](/api/commands/then) no
  longer breaks the subject value in the command chain. Fixes
  [#8084](https://github.com/cypress-io/cypress/issues/8084).
- Using
  [Cypress.Commands.overwrite](/api/cypress-api/custom-commands#Overwrite-Existing-Commands)
  to overwrite [.then()](/api/commands/then) now preserves the proper `this`
  context and sets aliases correctly. Fixes
  [#5101](https://github.com/cypress-io/cypress/issues/5101).
- Using
  [Cypress.Commands.overwrite](/api/cypress-api/custom-commands#Overwrite-Existing-Commands)
  to overwrite `cy.route()` or [cy.intercept()](/api/commands/intercept) and
  wait on its alias now properly works. Fixes
  [#3890](https://github.com/cypress-io/cypress/issues/3890) and
  [#9580](https://github.com/cypress-io/cypress/issues/9580).
- Cypress no longer fails to find specs if you set the fixtures folder to be the
  same as the integration folder. Fixes
  [#14226](https://github.com/cypress-io/cypress/issues/14226).
- Cypress no longer fails to show error code frames if the spec filename has a
  space in it, fixes [#7553](https://github.com/cypress-io/cypress/issues/7553).

**Misc:**

- `scrollBehavior` is now an allowed type when passed as test configuration.
  Addresses [#9643](https://github.com/cypress-io/cypress/issues/9643).
- The `FileObject` type for the file argument of the `file:preprocessor` event
  now includes the `EventEmitter` type. Addresses
  [#9276](https://github.com/cypress-io/cypress/issues/9276).

**Dependency Updates:**

- Upgraded `electron` from `11.0.2` to `11.0.3`. Addressed in
  [#9409](https://github.com/cypress-io/cypress/issues/9409).

## 6.1.0

_Released 12/07/2020_

**Features:**

- There's a new `scrollBehavior` configuration option that controls the viewport
  position when an element is scrolled prior to action commands. Possible values
  are `'top'`, `'bottom'`, `'center'`, `'nearest'`, and `false`, with `'top'`
  being the default. `scrollBehavior: false` disables scrolling altogether.
  `scrollBehavior` can be specified in
  [global configuration](/app/references/configuration#Actionability),
  [test configuration](/app/core-concepts/writing-and-organizing-tests#Test-Configuration)
  or individual
  [action commands](/app/core-concepts/interacting-with-elements) via
  `options`. Addresses [#871](https://github.com/cypress-io/cypress/issues/871)
  and [#4356](https://github.com/cypress-io/cypress/issues/4356).
- The **Tests** tab in the Test Runner now orders folders before files. This
  matches the ordering of most IDEs' file explorers. Addresses
  [#7334](https://github.com/cypress-io/cypress/issues/7334).

**Bugfixes:**

- Responses stubbed from [cy.intercept()](/api/commands/intercept) will now
  automatically set `Access-Control-Allow-Origin` and
  `Access-Control-Allow-Credentials` to permissive values unless explicitly
  overridden. Fixes [#9264](https://github.com/cypress-io/cypress/issues/9264).
- The `Cannot read property "fireChangeEvent" of undefined` error will no longer
  throw during a race condition when using
  [cy.intercept()](/api/commands/intercept). Fixes
  [#9170](https://github.com/cypress-io/cypress/issues/9170).
- HTTP responses that cannot have a body (like HTTP 304 and HTTP 204) can now be
  awaited using [cy.intercept()](/api/commands/intercept). Fixes
  [#8934](https://github.com/cypress-io/cypress/issues/8934) and
  [#8999](https://github.com/cypress-io/cypress/issues/8999).
- We fixed an issue where HTTP redirects could not be awaited using
  [cy.intercept()](/api/commands/intercept) unless dynamically intercepted.
  Addressed in [#9097](https://github.com/cypress-io/cypress/pull/9097).
- Tests will no longer hang in certain situations when there's an error in a
  `before()` hook. Fixes
  [#9162](https://github.com/cypress-io/cypress/issues/9162).
- We no longer strip `/` from URLs when they are explicitly passed with query
  parameters. Fixes [#9360](https://github.com/cypress-io/cypress/issues/9360).
- Fixed the regression in `Cypress.dom.isVisible` behavior for elements with
  `position: fixed`, addresses
  [#8998](https://github.com/cypress-io/cypress/issues/8998) and
  [#9031](https://github.com/cypress-io/cypress/issues/9031).

**Deprecations:**

Deprecations still work as before but will be removed from Cypress in a future
release. We encourage you to update your code now to remove uses of
deprecations.

- `Cypress.moment` has been deprecated and will be replaced in a future release.
  Consider migrating to a different datetime formatter. Addresses
  [#8714](https://github.com/cypress-io/cypress/issues/8714).

**Misc:**

- We collect more environment variables from Bitbucket to better detect reruns.
  Addresses [#9309](https://github.com/cypress-io/cypress/issues/9309).
- `waitForAnimations` and `animationDistanceThreshold` types are now included
  for all actionable commands. Addresses
  [#8854](https://github.com/cypress-io/cypress/issues/8854).

**Dependency Updates:**

- Upgraded `mocha-junit-reporter` from `1.23.1` to `2.0.0`. Addressed in
  [#9528](https://github.com/cypress-io/cypress/issues/9528).

## 6.0.1

_Released 11/30/2020_

**Bugfixes:**

- Chromium based browsers on version 87 will no longer show recorded videos as
  frozen or blank. Fixes
  [#9265](https://github.com/cypress-io/cypress/issues/9265).
- We fixed a regression introduced in
  [5.0.0](#5-0-0) that would cause an
  `Option 'sourceMap' cannot be specified with option 'inlineSourceMap'` error
  to throw when setting `sourceMap` in your tsconfig. Fixes
  [#8477](https://github.com/cypress-io/cypress/issues/8477).
- [cy.screenshot()](/api/commands/screenshot) no longer throws an
  `"offset" is out of range` error when Cypress attempts to crop the image.
  Fixes [#2034](https://github.com/cypress-io/cypress/issues/2034).
- [cy.screenshot()](/api/commands/screenshot) types won't mistakenly display the
  command as deprecated. Fixes
  [#9303](https://github.com/cypress-io/cypress/issues/9303).
- Lower-cased HTTP methods can now be used with
  [cy.intercept()](/api/commands/intercept). Fixes
  [#9313](https://github.com/cypress-io/cypress/issues/9313).

## 6.0.0

_Released 11/23/2020_

**Summary:**

Cypress now offers full network stubbing support with the introduction of the
[cy.intercept()](/api/commands/intercept) command (previously `cy.route2()`).
With [cy.intercept()](/api/commands/intercept) your tests can intercept, modify
and wait on any type of HTTP request originating from your app. See our guide on
[Migrating `cy.route()` to `cy.intercept()`](/app/references/migration-guide#Migrating-cyroute-to-cyintercept).

**Breaking Changes:**

<Icon name="exclamation-triangle" color="red" /> Please read our [Migration Guide](/app/references/migration-guide)
which explains the changes in more detail and how to change your code to migrate
to Cypress 6.0.**

- Cypress now always throws an error when asserting on an element that doesn't
  exist in the DOM (unless you're asserting that the element should
  `not.exist`). Assertions such as `not.visible`, `not.contains`,
  `not.have.class`, etc will now fail when used on non-existent DOM elements.
  Addresses [#205](https://github.com/cypress-io/cypress/issues/205).
- DOM elements where the CSS style (or ancestors) are `opacity: 0` are no longer
  considered visible. However these are still considered
  [actionable](/app/core-concepts/interacting-with-elements) and
  [any action commands](/app/core-concepts/interacting-with-elements#Actionability)
  used to interact with the element will perform the action. This matches
  browser's implementation on how they regard elements with `opacity: 0`.
  Addresses [#4474](https://github.com/cypress-io/cypress/issues/4474).
- The type yielded by [cy.wait(alias)](/api/commands/wait) has changed in order
  to support use of [cy.intercept()](/api/commands/intercept). Addressed in
  [#9266](https://github.com/cypress-io/cypress/issues/9266).
- The `experimentalNetworkStubbing` option has been removed and made the default
  behavior. You can safely removed this configuration option. Addressed in
  [#9185](https://github.com/cypress-io/cypress/issues/9185).
- When using [.type()](/api/commands/type) and [.click()](/api/commands/click)
  on elements inside a `contenteditable` element, the events are now properly
  triggered on the inside elements. This may cause unintended consequences if
  you were relying on the previous behavior. Addressed in
  [#9066](https://github.com/cypress-io/cypress/issues/9066).
- We removed several deprecation errors around APIs that were removed in
  versions of Cypress prior to [4.0.0](#4-0-0). This will not cause any changes for anyone
  upgrading from a 4.0+ version of Cypress. For a full list of all APIs affected
  see [#8946](https://github.com/cypress-io/cypress/issues/8946).
- We updated our HTTP status codes and reason phrases to match Node.js
  `http.STATUS_CODES`. If you have code that relies on a reason phrase, then
  this could affect you. Addressed in
  [#8969](https://github.com/cypress-io/cypress/issues/8969).
- JSON request and response bodies captured by
  [cy.intercept()](/api/commands/intercept) are now automatically parsed,
  removing the need to manually do `JSON.parse`. Addressed in
  [#9280](https://github.com/cypress-io/cypress/issues/9280).

**Deprecations:**

Deprecations still work as before but will be removed from Cypress in a future
release. We encourage you to update your code now to remove uses of
deprecations.

- `cy.server()` and `cy.route()` have been deprecated. In a future release,
  support for `cy.server()` and `cy.route()` will be removed. We encourage you
  to use [cy.intercept()](/api/commands/intercept) instead. See our guide on
  [Migrating `cy.route()` to `cy.intercept()`](/app/references/migration-guide#Migrating-cyroute-to-cyintercept).
  Addressed in [#9185](https://github.com/cypress-io/cypress/pull/9185).
- `experimentalFetchPolyfill` has been deprecated. We encourage you to use
  [cy.intercept()](/api/commands/intercept) to intercept requests using the
  Fetch API instead.
- `cy.route2()` was renamed to [cy.intercept()](/api/commands/intercept). We
  encourage you to update usages of `cy.route2()` to use
  [cy.intercept()](/api/commands/intercept). Addressed in
  [#9182](https://github.com/cypress-io/cypress/issues/9182).

**Features:**

- The new [cy.intercept()](/api/commands/intercept) command can be used to
  manage the behavior of HTTP requests at the network layer. Addressed in
  [#9182](https://github.com/cypress-io/cypress/issues/9182).
- We now pass `—disable-dev-shm-usage` to the Chrome browser flags by default.
  This will write shared memory files into `/tmp` instead of `/dev/shm`. If
  you're passing this flag in your `plugins` file, you can now remove this code.
  Addresses [#5336](https://github.com/cypress-io/cypress/issues/5336).
- A warning is now displayed when passing invalid configuration keys through the
  CLI. Addresses [#428](https://github.com/cypress-io/cypress/issues/428).
- The `cypress version` command now also displays the current Electron and
  bundled Node versions. Addresses
  [#9180](https://github.com/cypress-io/cypress/issues/9180).
- The `cypress version` command now accepts a `--component` flag that allows you
  to print the version of specific components of Cypress. ie Electron, Node,
  etc. Addresses [#9214](https://github.com/cypress-io/cypress/issues/9214).

**Bugfixes:**

- We fixed a regression introduced in
  [3.5.0](#3-5-0) that would cause
  [.type()](/api/commands/type) to not type the entire string when focus was
  called away from the target element. Fixes
  [#9254](https://github.com/cypress-io/cypress/issues/9254).
- [.type()](/api/commands/type) and [.click()](/api/commands/click) now properly
  work on elements inside a `contenteditable` element. Fixes
  [#2717](https://github.com/cypress-io/cypress/issues/2717) and
  [#7721](https://github.com/cypress-io/cypress/issues/7721).
- We fixed a regression introduced in
  [5.6.0](#5-6-0) that would cause the Test Runner
  to crashes and display a white page when switching tabs while tests are
  running. Fixes [#9151](https://github.com/cypress-io/cypress/issues/9151).
- Fixed an issue where `Content-Length` for `cy.route2` request bodies could be
  incorrectly recalculated. Fixes
  [#9166](https://github.com/cypress-io/cypress/issues/9166).

**Documentation Changes:**

- Our [Migration Guide](/app/references/migration-guide) has a new section
  for 6.0 migration.
- Many of our docs examples have been updated to use
  [cy.intercept()](/api/commands/intercept) in place of `cy.route()` including
  our [Network Requests](/app/guides/network-requests) doc.

**Misc:**

- Added the type of `redirects` and changed `redirectedToUrl` optional for
  Response types. Addresses
  [#9275](https://github.com/cypress-io/cypress/issues/9275).

**Dependency Updates**

- Upgraded Chrome browser version used during `cypress run` and when selecting
  Electron browser in `cypress open` from `85` to `87`. Addressed in
  [#9222](https://github.com/cypress-io/cypress/pull/9222).
- Upgraded bundled Node.js version from `12.16.3` to `12.18.3`. Addressed in
  [#9222](https://github.com/cypress-io/cypress/pull/9222).
- Upgraded `electron` from `10.1.5` to `11.0.2`. Addressed in
  [#9222](https://github.com/cypress-io/cypress/pull/9222).

## 5.6.0

_Released 11/09/2020_

**Features:**

- You can now dynamically add aliases for requests intercepted via
  `cy.route2()`. See an example. Addresses
  [#387](https://github.com/cypress-io/cypress/issues/387).
- You can now run all integration specs or all component specs separately (or a
  filtered list of specs) by clicking the appropriate button in the Test Runner
  in the _Tests_ tab. Addresses
  [#8203](https://github.com/cypress-io/cypress/issues/8203).
- Added a new modifier syntax to [cy.type()](/api/commands/type). You can now
  type shortcuts like `{ctrl+z}`. Addressed in
  [#5694](https://github.com/cypress-io/cypress/issues/5694).
- We now show a modal with release notes when available when there is a new
  version of Cypress. Addressed in
  [#9006](https://github.com/cypress-io/cypress/issues/9006).
- In the Test Runner's _Settings_ and _Runs_ tab you can now quickly copy the
  project id configuration and record key using a copy to clipboard icon.
  Addresses [#9002](https://github.com/cypress-io/cypress/issues/9002).

**Bugfixes:**

- Fixed a regression introduced in [4.12.0](#4-12-0)
  where snapshotting caused images to load too many times. Fixes
  [#8679](https://github.com/cypress-io/cypress/issues/8679).
- Using [cy.visit()](/api/commands/visit) on sites with `content-type` of
  `text-html` followed by parameters (like `text/html;charset=utf-8`) will no
  longer throw an error about visiting a site with an invalid content-type.
  Fixes [#8506](https://github.com/cypress-io/cypress/issues/8506)
- The `Cannot access 'continueSent' before initialization` error will no longer
  throw when using `cy.route2()`. Fixes
  [#8926](https://github.com/cypress-io/cypress/issues/8926).
- Awaiting a request body when providing a static response stub in `cy.route2()`
  should now work properly. Addressed in
  [#9059](https://github.com/cypress-io/cypress/issues/9059).
- The way that intercepted `cy.route2()` requests are displayed in the Command
  Log has been improved, including showing the progress bar correctly. Addresses
  [#9053](https://github.com/cypress-io/cypress/issues/9053).
- The `Cannot read property 'replace' of undefined` error will no longer throw
  when attempting to generate the stack trace from an error thrown in the
  application. Fixes [#7915](https://github.com/cypress-io/cypress/issues/7915).
- Stack traces in the Command Log originating from application errors where the
  location is unavailable will no longer show as a clickable link to open in
  IDE. Fixes [#9106](https://github.com/cypress-io/cypress/issues/9106).
- When using the `fixture:` prefix as a stubbed response to `cy.route()`, JSON
  fixtures containing only a number or boolean will no longer throw an error.
  Fixes [#4899](https://github.com/cypress-io/cypress/issues/4899).
- Fixed an issue causing failed subresource integrity checks for external
  scripts. Fixes [#8983](https://github.com/cypress-io/cypress/issues/8983),
  [#9049](https://github.com/cypress-io/cypress/issues/9049), and
  [#8992](https://github.com/cypress-io/cypress/issues/8992).

**Misc:**

- Typings for [.invoke()](/api/commands/invoke) and [.its()](/api/commands/its)
  now allow for a `timeout` option. Addresses
  [#9079](https://github.com/cypress-io/cypress/issues/9079).
- Typings for `cy.task()` now allow for parameterizing the task return type.
  Addresses [#7136](https://github.com/cypress-io/cypress/issues/7136).
- A clearer error is printed during `cypress cache list` when no cached versions
  are found. Addresses
  [#6303](https://github.com/cypress-io/cypress/issues/6303).

**Dependency Updates:**

- Upgraded `commander` from `^4.1.1` to `^5.1.0`. Addressed in
  [#8979](https://github.com/cypress-io/cypress/issues/8979).
- Upgraded `semver` from `6.3.0` to `7.3.2`. Addressed in
  [#9068](https://github.com/cypress-io/cypress/issues/9068).
- Upgraded `systeminformation` from `4.26.9` to `4.27.11`. Addressed in
  [#8979](https://github.com/cypress-io/cypress/issues/8979).
- Removed `node-webkit-updater`. This should remove some security warnings that
  were shown during install. Addresses
  [#8314](https://github.com/cypress-io/cypress/issues/8314).

## 5.5.0

_Released 10/26/2020_

**Features:**

- [cy.viewport()](/api/commands/viewport) has a new `macbook-16` preset.
  Addresses [#8889](https://github.com/cypress-io/cypress/issues/8889).
- [.type()](/api/commands/type) now fires the `beforeInput` event during typing.
  _Note: Firefox does not support the `beforeinput` event_. Addresses
  [#7088](https://github.com/cypress-io/cypress/issues/7088).

**Bugfixes:**

- Updated the Cypress proxy layer to proxy HTTPS traffic from non-AUT origins.
  Addressed in [#8827](https://github.com/cypress-io/cypress/pull/8827).
  - This fixed an issue with `cy.route2()` where HTTPS requests to a non-AUT
    origin would not be intercepted as expected.
- `cy.route2()` now properly handles passing a method as its first argument.
  Fixes [#8729](https://github.com/cypress-io/cypress/issues/8729).
- Fixed an issue with `cy.route2()` where a "Cannot set property response of
  undefined" error would occasionally occur. Fixes
  [#8858](https://github.com/cypress-io/cypress/issues/8858).
- Headers field names passed to `cy.route2()` now case-insensitively match
  against the field names of incoming HTTP requests. Fixes
  [#8921](https://github.com/cypress-io/cypress/issues/8921).
- Routes that stub fixtures for binary resources (including images) made with
  `cy.route2()` now serve the correct mime-type and content. Fixes
  [#8623](https://github.com/cypress-io/cypress/issues/8623).
- When [experimentalNetworkStubbing](/app/references/experiments) is enabled,
  using [cy.visit()](/api/commands/visit) to URLs that redirect and set
  Transfer-Encoding: chunked will no longer fail in Cypress with a "Parse
  Error". Fixes [#8497](https://github.com/cypress-io/cypress/issues/8497).
- `cypress.run()` through the [Module API](/app/references/module-api) now has a
  `status` property in the results matching the correct CLI types (`"failed"` or
  `"finished"`). Addresses
  [#8798](https://github.com/cypress-io/cypress/issues/8798).
- When a value containing an `e` character is passed to the `--ci-build-id`
  flag, Cypress now properly reads it as a string. Fixes
  [#8874](https://github.com/cypress-io/cypress/issues/8874).

**Misc:**

- Updated type definitions to allow for passed either `runMode` or `openMode` to
  `retries` alone. Addresses
  [#8869](https://github.com/cypress-io/cypress/issues/8869).

**Dependency Updates:**

- Upgraded `electron` from `10.1.3` to `10.1.5`. Addressed in
  [#8927](https://github.com/cypress-io/cypress/issues/8927) and
  [#8975](https://github.com/cypress-io/cypress/issues/8975).
  - This addresses a Chrome security issue, CVE-2020-15999. Addresses
    [#8922](https://github.com/cypress-io/cypress/issues/8922).
- Upgraded `color-string` from `1.5.3` to `1.5.4`. Addressed in
  [#8945](https://github.com/cypress-io/cypress/issues/8945).
- Upgraded `pretty-bytes` from `^5.3.0` to `^5.4.1`. Addressed in
  [#8964](https://github.com/cypress-io/cypress/issues/8964).

## 5.4.0

_Released 10/14/2020_

**Features:**

- You can now run
  [cypress cache prune](/app/references/command-line#cypress-cache-prune) to
  delete all installed Cypress versions from the cache except for the
  currently-installed version. Addresses
  [#5972](https://github.com/cypress-io/cypress/issues/5972).
- There's a new `--size` option for the
  [cypress cache list](/app/references/command-line#cypress-cache-list) command
  that prints the sizes of the Cypress cache folders. Addresses
  [#6404](https://github.com/cypress-io/cypress/issues/6404).
- For video recordings of runs, there is now a video chapter key for each test.
  If your video player supports chapters, you can move to the start of each test
  right away. Addresses
  [#3626](https://github.com/cypress-io/cypress/issues/3626).
- In Windows, you can now append the browser type to the end of the path passed
  to the `--browser` flag, like
  `cypress open --browser C:/User/App/browser.exe:chrome`, to help detect the
  browser type. Addresses
  [#6389](https://github.com/cypress-io/cypress/issues/6389).
- [cy.viewport()](/api/commands/viewport) has new `iphone-7`, `iphone-8`, and
  `iphone-se2` presets. Addressed in
  [#8624](https://github.com/cypress-io/cypress/issues/8624)
- When there is a new version of Cypress available, the update modal has a new
  design with 'copy to clipboard' buttons to copy the upgrade commands.
  Addressed in [#8751](https://github.com/cypress-io/cypress/pull/8751).
- The [Command Log](/app/core-concepts/open-mode#Command-Log) can be hidden
  by passing the `CYPRESS_NO_COMMAND_LOG=1` environment variable during
  `cypress open` or `cypress run` to be used as a tool to debug performance
  issues. Addressed in
  [#8689](https://github.com/cypress-io/cypress/issues/8689).

**Bugfixes:**

- We fixed a regression in [5.0.0](#5-0-0) where the `chromeWebSecurity` option
  had no effect in Electron. Fixes
  [#8399](https://github.com/cypress-io/cypress/issues/8399).
- Tests will no longer hang and now properly throw when there is an error thrown
  from a `test:after:run` event listener. Fixes
  [#2271](https://github.com/cypress-io/cypress/issues/2271) and
  [#8701](https://github.com/cypress-io/cypress/issues/8701).
- When a command is chained after [.within()](/api/commands/within) and
  [`cy.get()`](/api/commands/get) is called inside it, the scope will no longer
  permanently change. Fixes
  [#2106](https://github.com/cypress-io/cypress/issues/2106),
  [#4672](https://github.com/cypress-io/cypress/issues/4672),
  [#4757](https://github.com/cypress-io/cypress/issues/4757), and
  [#5183](https://github.com/cypress-io/cypress/issues/5183).
- Dual commands like [cy.contains()](/api/commands/contains) when used after an
  [.each()](/api/commands/each) commands now query as expected. Fixes
  [#4921](https://github.com/cypress-io/cypress/issues/4921).
- `/` is no longer added to the URL when `baseUrl` has param(s). Fixes
  [#2101](https://github.com/cypress-io/cypress/issues/2101).
- When using `cy.route2()` the route handler timeouts will no longer leak into
  other tests and cause random failures. Addressed in
  [#8727](https://github.com/cypress-io/cypress/issues/8727).
- The `request.body` is now available when using [cy.wait()](/api/commands/wait)
  on an aliased `cy.route2()` route which had not been intercepted. Fixes
  [#8695](https://github.com/cypress-io/cypress/issues/8695).
- Re-running failed build steps in Bitbucket will no longer create a new run on
  the Cypress Dashboard. Fixes
  [#8720](https://github.com/cypress-io/cypress/issues/8720).
- The forced garbage collection timer will no longer display when using a
  version of Firefox newer than 80. Fixes
  [#8725](https://github.com/cypress-io/cypress/issues/8725).
- The browser dropdown is no longer covered when opened from the Runs tab in the
  Test Runner. Fixed in
  [#8745](https://github.com/cypress-io/cypress/issues/8745).
- Fixed an issue where preprocessor-related plugins would cause tests not to run
  and a duplicate instance of Cypress to be spawned. Fixes
  [#8634](https://github.com/cypress-io/cypress/issues/8634).

**Misc:**

- Improved type definitions for `cy.route2()`. Addresses
  [#8694](https://github.com/cypress-io/cypress/issues/8694) and
  [#8782](https://github.com/cypress-io/cypress/issues/8782).
- The Test Runner now shows an indicator in the footer and a toast notification
  if there is a new version available. Addressed in
  [#8702](https://github.com/cypress-io/cypress/issues/8702) and
  [#8803](https://github.com/cypress-io/cypress/issues/8803).

**Dependency Updates:**

- Upgraded Chrome browser version used during `cypress run` and when selecting
  Electron browser in `cypress open` from `83` to `85`. Addressed in
  [#8406](https://github.com/cypress-io/cypress/pull/8406).
- Upgraded bundled Node.js version from `12.14.1` to `12.16.3`. Addressed in
  [#8406](https://github.com/cypress-io/cypress/pull/8406).
- Upgraded `electron` from `9.2.1` to `10.1.3`. Addressed in
  [#8406](https://github.com/cypress-io/cypress/pull/8406).
- Upgraded `firefox-profile` from `2.0.0` to `4.0.0`. Addressed in
  [#8786](https://github.com/cypress-io/cypress/pull/8786).
- Upgraded `node-forge` from `0.9.0` to `0.10.0`. Addressed in
  [#8800](https://github.com/cypress-io/cypress/pull/8800).

## 5.3.0

_Released 09/28/2020_

**Features:**

- Firefox support is now out of beta! 🎉 Firefox 80 and newer are now officially
  stable when used with Cypress. Addresses
  [#8241](https://github.com/cypress-io/cypress/issues/8241).
  - Versions of Firefox older than 80 can still be used, but will be subject to
    the `firefoxGcInterval` workaround. The desktop GUI will display a warning
    if such versions are used.

**Bugfixes:**

- Fixed a bug where `cy.route2()` would not automatically JSONify an empty array
  handler. Addresses [#8532](https://github.com/cypress-io/cypress/issues/8532).
- Fixed a bug where objects yielded by using `cy.wait` on a `cy.route2()` alias
  would not always have a `response` property. Addresses
  [#8536](https://github.com/cypress-io/cypress/issues/8536).
- Fixed an issue where `cy.route2()` routes would not be able to intercept
  requests to HTTPS destinations on a different origin. Addresses
  [#8487](https://github.com/cypress-io/cypress/issues/8487).
- Fixed an issue where subjects became `undefined` after certain assertion
  failures. Addresses
  [#5763](https://github.com/cypress-io/cypress/issues/5763).
- Fixed an issue where a `cy.task` with no arguments passed would receive `null`
  as the first argument instead of `undefined`. Addresses
  [#5913](https://github.com/cypress-io/cypress/issues/5913).
- Fixed an issue preventing users from passing the config-file argument when
  starting cypress through the node module API. Addresses
  [#8632](https://github.com/cypress-io/cypress/issues/8632).
- Fixed an issue where `cy.visit()`s to a relative URL containing `..` would not
  work. Addresses [#5090](https://github.com/cypress-io/cypress/issues/5090).
- Fixed an issue where Mocha hooks could still be triggered after the Test
  Runner was manually stopped. Addresses
  [#8621](https://github.com/cypress-io/cypress/issues/8621).
- Fixed an issue where `cy.setCookie` failed when given a cookie name with a
  `__Host-` prefix. Addresses
  [#8261](https://github.com/cypress-io/cypress/issues/8261).
- Fixed an issue where a misleading error was displayed when test code threw an
  exception with a non-`Error` object. Addresses
  [#7870](https://github.com/cypress-io/cypress/issues/7870).

**Misc:**

- The proxy now omits the `Content-Security-Policy-Report-Only` header the same
  way that it does for `Content-Security-Policy`. Addresses
  [#7936](https://github.com/cypress-io/cypress/issues/7936).
- Added a `status` property to `CypressRunResult` objects. Addresses
  [#8580](https://github.com/cypress-io/cypress/issues/8580).
- Updated types to no longer use deprecated Mocha interfaces. Addresses
  [#5795](https://github.com/cypress-io/cypress/issues/5795).
- Passing an empty string to `CYPRESS_INSTALL_BINARY` now takes precedence over
  npm config. Addresses
  [#8488](https://github.com/cypress-io/cypress/issues/8488).

## 5.2.0

_Released 09/15/2020_

**Features:**

- Added the configuration option `includeShadowDom` for enabling shadow DOM
  querying globally, per-suite, per-test, or programmatically. Addresses
  [#8442](https://github.com/cypress-io/cypress/issues/8442).
- Added a `followRedirect` option to request interception with `cy.route2()` ,
  allowing redirects to be followed before continuing to response interception.
  Addresses [#7967](https://github.com/cypress-io/cypress/issues/7967).
- Added the capability to specify `delayMs` and `throttleKbps` when stubbing
  static responses with `cy.route2()` . Addresses
  [#7661](https://github.com/cypress-io/cypress/issues/7661).
- Installing Cypress pre-releases no longer requires setting the
  `CYPRESS_BINARY_INSTALL` environment variable. Addresses
  [#8482](https://github.com/cypress-io/cypress/issues/8482).

**Performance Improvements:**

- Fixed a performance issue which led to CPU bottlenecking during Cypress runs.
  Addresses [#8012](https://github.com/cypress-io/cypress/issues/8012) and
  [#8297](https://github.com/cypress-io/cypress/issues/8297).

**Bugfixes:**

- Fixed an issue where using TypeScript path aliases in the plugins file would
  error. Addresses [#8555](https://github.com/cypress-io/cypress/issues/8555).
- Fixed an issue where using `cy.contains()` within a shadow root would not
  yield the correct element. Addresses
  [#8494](https://github.com/cypress-io/cypress/issues/8494).
- Fixed an issue where querying the shadow DOM in a `cy.within()` callback would
  throw the error `root.getRootNode is not a function`. Addresses
  [#8478](https://github.com/cypress-io/cypress/issues/8478).
- Fixed an issue with `cy.type()` `{moveToStart}/{moveToEnd}` special characters
  moving the cursor to the current line instead of the entire text editable when
  typing in a `contenteditable` element. Addresses
  [#8465](https://github.com/cypress-io/cypress/issues/8465).
- Fixed an issue where typing into a manually-focused number input would prepend
  the number instead of appending it. Addresses
  [#7170](https://github.com/cypress-io/cypress/issues/7170).
- `cy.type()` now fires a `KeyboardEvent` event instead of an `Event` event.
  Addresses [#6125](https://github.com/cypress-io/cypress/issues/6125) and
  [#5650](https://github.com/cypress-io/cypress/issues/5650).
- Fixed long selectors in the selector playground text input overflowing other
  page elements. Addresses
  [#8247](https://github.com/cypress-io/cypress/issues/8247) and
  [#4184](https://github.com/cypress-io/cypress/issues/4184).
- Fixed an issue where assertions on `cy.getCookie()` would be called twice.
  Addresses [#6672](https://github.com/cypress-io/cypress/issues/6672).
- Fixed an issue that caused the "Open in IDE" button on hooks and tests not to
  appear in Firefox. Addresses
  [#8257](https://github.com/cypress-io/cypress/issues/8257).
- Fixed an issue causing Cypress to hang on test retry in run mode with certain
  assertions. Addresses
  [#8363](https://github.com/cypress-io/cypress/issues/8363).

**Documentation Changes:**

- Fixed examples of delaying and throttling responses with `cy.route2()` .
  Addresses [#8489](https://github.com/cypress-io/cypress/issues/8489).
- Added examples of using a response function with `cy.route2()` . Addresses
  [#8468](https://github.com/cypress-io/cypress/issues/8468).
- Removed unmaintained languages. English docs is the only supported language by
  the Cypress team. We greatly appreciate the contributions from the community
  for other languages, but these docs are largely stale, unmaintained, and
  partial. The Cypress team will seek out more scalable docs internalization
  implementation in the future.

**Misc:**

- The `experimentalShadowDomSupport` configuration flag has been removed. It is
  no longer necessary to enable shadow DOM testing.
- Improved the error message when the subject provided to `cy.shadow()` is not a
  shadow host. Addresses
  [#8530](https://github.com/cypress-io/cypress/issues/8530).
- Improved the error message when the Cypress binary is not executable. It now
  recommends trying to clear the cache and re-install. Addresses
  [#8397](https://github.com/cypress-io/cypress/issues/8397).
- Added missing type declarations for the `cy.route2()` command.
- Updated the type declaration for `Cypress.Commands.add()`, adding `Promise` to
  the list of allowed return types. Addresses
  [#7807](https://github.com/cypress-io/cypress/issues/7807).

## 5.1.0

_Released 09/01/2020_

**Features:**

- Introducing _experimental_ full network stubbing support 🎉.
  - With `experimentalNetworkStubbing` enabled, the `cy.route2` command is
    available. Addressed in
    [#4176](https://github.com/cypress-io/cypress/issues/4176).
  - By using `cy.route2()` , your tests can intercept, modify, and wait on any
    type of HTTP request originating from your app, including `XMLHttpRequest`s,
    `fetch` requests, beacons, and subresources (like iframes and scripts).
  - Outgoing HTTP requests can be modified before reaching the destination
    server, and the HTTP response can be intercepted as well before it reaches
    the browser.
  - See the `cy.route2()` docs for more information on how to enable this
    experiment.
- `cy.trigger()` now accepts an `eventConstructor` option for specifying the
  constructor with which to create the event to trigger. Addresses
  [#5650](https://github.com/cypress-io/cypress/issues/5650).

**Bugfixes:**

- Improved warnings for when user is exceeding test limits of the free Dashboard
  plan. Addresses [#8409](https://github.com/cypress-io/cypress/issues/8409).
- Added `retries` to `TestOptions` types. Addresses
  [#8405](https://github.com/cypress-io/cypress/issues/8405).
- Added types for `specType` field on `Cypress.spec`. Addresses
  [#8256](https://github.com/cypress-io/cypress/issues/8256).
- Fixed a typo in type definitions. Addresses
  [#8417](https://github.com/cypress-io/cypress/issues/8417).
- Cypress now resolves and loads tsconfig.json for TypeScript projects starting
  from the plugins directory. Addresses
  [#8359](https://github.com/cypress-io/cypress/issues/8359).
- Fixed an issue where, if npm config's `noproxy` is set, unexpected behavior
  could occur. Addresses
  [#8287](https://github.com/cypress-io/cypress/issues/8287).
- Fixed an issue where nesting hooks within other hooks caused the test to never
  finish. Addresses [#8350](https://github.com/cypress-io/cypress/issues/8350).
- Fixed an issue in where tests would unexpectedly fail with a "Can't resolve
  'async_hooks'" error. Addresses
  [#8375](https://github.com/cypress-io/cypress/issues/8375).
- Fixed an issue where return values from blob utils were mistaken for promises
  and could cause errors. Addresses
  [#8365](https://github.com/cypress-io/cypress/issues/8365).
- Fixed an issue with loading `.mjs` files. Addresses
  [#8361](https://github.com/cypress-io/cypress/issues/8361).
- Fixed an issue causing tests to run slowly in Electron. Addresses
  [#7930](https://github.com/cypress-io/cypress/issues/7930).
- Using `.should` with only chainer assertions will now throw an error.
  Addresses [#883](https://github.com/cypress-io/cypress/issues/883).
- `cy.trigger()` now includes the `view` property in the event object when
  appropriate. Addresses
  [#3686](https://github.com/cypress-io/cypress/issues/3686).
- Fixed an issue where Cypress would not detect newer 64-bit installations of
  Chrome on Windows. Addresses
  [#8425](https://github.com/cypress-io/cypress/issues/8425).
- Fixed an issue where Cypress would not detect per-user Firefox installations
  on Windows. Addresses
  [#8432](https://github.com/cypress-io/cypress/issues/8432).

**Dependency Updates:**

- Updated dependency `iconv-lite` to version `0.6.2`. Addresses
  [#8387](https://github.com/cypress-io/cypress/issues/8387).
- Updated dependency `command-exists` to version `1.2.9`. Addresses
  [#8388](https://github.com/cypress-io/cypress/issues/8388).
- Updated dependency `electron` to version `9.2.1`. Addresses
  [#8436](https://github.com/cypress-io/cypress/issues/8436).

## 5.0.0

_Released 08/19/2020_

**Summary:**

Cypress now includes support for test retries! Similar to how Cypress will retry
assertions when they fail, test retries will allow you to automatically retry a
failed test prior to marking it as failed. Read our new guide on
[Test Retries](/app/guides/test-retries) for more details.

**Breaking Changes:**

<Icon name="exclamation-triangle" color="red" /> Please read our [Migration Guide](/app/references/migration-guide)
which explains the changes in more detail and how to change your code to migrate
to Cypress 5.0.**

- The
  [`cypress-plugin-retries`](https://github.com/Bkucera/cypress-plugin-retries)
  plugin has been deprecated in favor of
  [test retries](/app/guides/test-retries) built into Cypress. Addresses
  [#1313](https://github.com/cypress-io/cypress/issues/1313).
- The [Cypress.Cookies.defaults()](/api/cypress-api/cookies) `whitelist` option
  has been renamed to `preserve` to more closely reflect its behavior. Addressed
  in [#7782](https://github.com/cypress-io/cypress/issues/7782).
- The `blacklistHosts` configuration has been renamed to
  [blockHosts](/app/references/configuration#Notes) to more closely reflect
  its behavior. Addressed in
  [#7622](https://github.com/cypress-io/cypress/issues/7622).
- The `cy.server()` `whitelist` option has been renamed to `ignore` to more
  closely reflect its behavior. Addresses
  [#6642](https://github.com/cypress-io/cypress/issues/6642).
- `libgbm-dev` is now a requirement to run Cypress on Linux. Addressed in
  [#7791](https://github.com/cypress-io/cypress/pull/7791).
- Values yielded by [cy.setCookie()](/api/commands/setcookie),
  [cy.getCookie()](/api/commands/getcookie), and
  [cy.getCookies()](/api/commands/getcookies) will now contain the `sameSite`
  property if specified. Addresses
  [#6892](https://github.com/cypress-io/cypress/issues/6892).
- The `experimentalGetCookiesSameSite` configuration flag has been removed,
  since this behavior is now the default. Addresses
  [#6892](https://github.com/cypress-io/cypress/issues/6892).
- The return type of the [Cypress.Blob](/api/utilities/blob) methods
  `arrayBufferToBlob`, `base64StringToBlob`, `binaryStringToBlob`, and
  `dataURLToBlob` have changed from `Promise<Blob>` to `Blob`. Addresses
  [#6001](https://github.com/cypress-io/cypress/issues/6001).
- Cypress no longer supports file paths with a question mark `?` or exclamation
  mark `!` in them. We now use the
  [webpack preprocessor](https://github.com/cypress-io/cypress/tree/master/npm/webpack-preprocessor)
  by default and it does not support files with question marks or exclamation
  marks. Addressed in [#7982](https://github.com/cypress-io/cypress/pull/7982).
- For TypeScript compilation of spec, support, and plugins files, the
  `esModuleInterop` option is no longer coerced to `true`. If you need to
  utilize `esModuleInterop`, set it in your `tsconfig.json`. Addresses
  [#7575](https://github.com/cypress-io/cypress/issues/7575).
- Cypress now requires TypeScript 3.4+. Addressed in
  [#7856](https://github.com/cypress-io/cypress/issues/7856).
- Installing Cypress on your system now requires Node.js 10+. Addresses
  [#6574](https://github.com/cypress-io/cypress/issues/6574).
- In spec files, the values for the globals `__dirname` and `__filename` no
  longer include leading slashes. Addressed in
  [#7982](https://github.com/cypress-io/cypress/pull/7982).

**Features:**

- There's a new `retries` configuration option to configure the number of times
  to retry a failing test. Addresses
  [#1313](https://github.com/cypress-io/cypress/issues/1313).
- [.click()](/api/commands/click), [.dblclick()](/api/commands/dblclick), and
  [.rightclick()](/api/commands/rightclick) now accept options `altKey`,
  `ctrlKey`, `metaKey`, and `shiftKey` to hold down key combinations while
  clicking. Addresses [#486](https://github.com/cypress-io/cypress/issues/486).
- You can now chain `.snapshot()` off of `cy.stub()` and `cy.spy()` to disabled
  snapshots during those commands. For example: `cy.stub().snapshot(false)`.
  Addresses [#3849](https://github.com/cypress-io/cypress/issues/3849).

**Bugfixes:**

- The error `Cannot set property 'err' of undefined` will no longer incorrectly
  throw when rerunning tests in the Test Runner. Fixes
  [#7874](https://github.com/cypress-io/cypress/issues/7874) and
  [#8193](https://github.com/cypress-io/cypress/issues/8193).
- Cypress will no longer throw a
  `Cannot read property 'isAttached' of undefined` error during `cypress run` on
  Firefox versions `>=75`. Fixes
  [#6813](https://github.com/cypress-io/cypress/pull/6813).
- The error `Maximum call stack size exceeded` will no longer throw when calling
  `scrollIntoView` on an element in the shadow dom. Fixes
  [#7986](https://github.com/cypress-io/cypress/issues/7986).
- Cypress [environment variables](/app/references/environment-variables) that
  accept arrays as their value will now properly evaluate as arrays. Fixes
  [#6810](https://github.com/cypress-io/cypress/issues/6810).
- Elements having `display: inline` will no longer be considered hidden if it
  has child elements within it that are visible. Fixes
  [#6183](https://github.com/cypress-io/cypress/issues/6183).
- When [experimentalShadowDomSupport](/app/references/experiments) is
  enabled, [.parent()](/api/commands/parent) and
  [.parentsUntil()](/api/commands/parentsuntil) commands now work correctly in
  shadow dom as well as passing a selector to
  [.parents()](/api/commands/parents) when the subject is in the shadow dom.
  Fixed in [#8202](https://github.com/cypress-io/cypress/pull/8202).
- Screenshots will now be correctly taken when a test fails in an `afterEach` or
  `beforeEach` hook after the hook has already passed. Fixes
  [#3744](https://github.com/cypress-io/cypress/issues/3744).
- Cypress will no longer report screenshots overwritten in a `cy.screenshot()`
  [onAfterScreenshot](/api/commands/screenshot#Get-screenshot-info-from-the-onAfterScreenshot-callback)
  option as a unique screenshot. Fixes
  [#8079](https://github.com/cypress-io/cypress/issues/8079).
- Taking screenshots will no longer fail when the screenshot names are too long
  for the filesystem to accept. Fixes
  [#2403](https://github.com/cypress-io/cypress/issues/2403).
- The "last used browser" will now be correctly remembered during `cypress open`
  if a non-default-channel browser was selected. Fixes
  [#8281](https://github.com/cypress-io/cypress/issues/8281).
- For TypeScript projects, `tsconfig.json` will now be loaded and used to
  configure TypeScript compilation of spec and support files. Fixes
  [#7006](https://github.com/cypress-io/cypress/issues/7006) and
  [#7503](https://github.com/cypress-io/cypress/issues/7503).
- `reporterStats` now correctly show the number of passed and failed tests when
  a test passes but the `afterEach` fails. Fixes
  [#7730](https://github.com/cypress-io/cypress/issues/7730).
- The Developer Tools menu will now always display in Electron when switching
  focus from Specs to the Test Runner. Fixes
  [#3559](https://github.com/cypress-io/cypress/pull/3559).

**Documentation Changes:**

- We have a new guide on [Test Retries](/app/guides/test-retries).
- Our [Migration Guide](/app/references/migration-guide) has a new section
  for 5.0 migration.

**Misc:**

- Cypress now uses the
  [webpack preprocessor](https://github.com/cypress-io/cypress/tree/master/npm/webpack-preprocessor)
  by default to preprocess spec files.
- The **Runs** tab within the Test Runner has a new improved design when the
  project has not been set up or login is required. Addressed in
  [#8141](https://github.com/cypress-io/cypress/pull/8141).
- The type for the `Window` object returned from
  [cy.window()](/api/commands/window) is now correct. Addresses
  [#7856](https://github.com/cypress-io/cypress/issues/7856).
- The type definition for Cypress's `ApplicationWindow` can now be extended.
  Addresses [#7856](https://github.com/cypress-io/cypress/issues/7856).
- The type definition for `reporterOptions` has been added. Addresses
  [#7877](https://github.com/cypress-io/cypress/issues/7877).

**Dependency Updates**

- Upgraded Chrome browser version used during cypress run and when selecting
  Electron browser in cypress open from `80` to `83`. Addressed in
  [#7791](https://github.com/cypress-io/cypress/pull/7791).
- Upgraded bundled Node.js version from `12.8.1` to `12.14.1`. Addressed in
  [#7791](https://github.com/cypress-io/cypress/pull/7791).
- Upgraded `chalk` from `2.4.2` to `4.1.0`. Addressed in
  [#7650](https://github.com/cypress-io/cypress/pull/7650).
- Upgraded `cli-table3` from `0.5.1` to `0.6.0`. Addressed in
  [#7650](https://github.com/cypress-io/cypress/pull/7650).
- Upgraded `electron` from `8.3.1` to `9.2.0`. Addressed in
  [#7791](https://github.com/cypress-io/cypress/pull/7791) and
  [#8235](https://github.com/cypress-io/cypress/pull/8235).
- Upgraded `execa` from `1.0.0` to `4.0.2`. Addressed in
  [#7650](https://github.com/cypress-io/cypress/pull/7650).
- Upgraded `express` from `4.16.4` to `4.17.1`. Addressed in
  [#8179](https://github.com/cypress-io/cypress/pull/8179).
- Upgraded `fs-extra` from `8.1.0` to `9.0.1`. Addressed in
  [#7650](https://github.com/cypress-io/cypress/pull/7650).
- Upgraded `log-symbols` from `3.0.0` to `4.0.0`. Addressed in
  [#7650](https://github.com/cypress-io/cypress/pull/7650).
- Upgraded `tmp` from `0.1.0` to `0.2.1`. Addressed in
  [#7650](https://github.com/cypress-io/cypress/pull/7650).

## 4.12.1

_Released 08/05/2020_

**Bugfixes:**

- The error `Cannot set property 'err' of undefined` will no longer incorrectly
  throw when rerunning tests in the Test Runner. Fixes
  [#7874](https://github.com/cypress-io/cypress/issues/7874).
- Skipping the last test before a nested suite with a `before` hook will now
  correctly run the tests in the suite following the skipped test. Fixes
  [#8086](https://github.com/cypress-io/cypress/issues/8086).

**Dependency Updates:**

- Upgraded `md5` from `2.2.1` to `2.3.0`. Addressed in
  [#8161](https://github.com/cypress-io/cypress/pull/8161).
- Upgraded `electron-context-menu` from `0.15.1` to `2.2.0`. Addressed in
  [#8180](https://github.com/cypress-io/cypress/pull/8180).

## 4.12.0

_Released 08/03/2020_

**Features:**

- Now you can control whether screenshots are automatically taken on test
  failure during `cypress run` by setting
  [`screenshotOnRunFailure`](/app/references/configuration#Screenshots) in
  your configuration. Addresses
  [#5029](https://github.com/cypress-io/cypress/issues/5029).
- The `pluginsFile` now has access to a readonly `version` property within the
  `config` object that returns the current Cypress version being run. This will
  allow plugins to better target specific Cypress versions. Addresses
  [#6352](https://github.com/cypress-io/cypress/issues/6352).
- During `cypress open`, you can now run a subset of all specs by
  entering a text search filter and clicking 'Run n tests'
  Addresses [#6581](https://github.com/cypress-io/cypress/issues/6581).

**Bugfixes:**

- `position: fixed` elements that have a parent with `pointer-events: none` will
  now correctly evaluate as visible. Fixes
  [#6675](https://github.com/cypress-io/cypress/issues/6675).
- Applications using custom elements will no longer trigger infinite XHR request
  loops. Fixes [#1068](https://github.com/cypress-io/cypress/issues/1068).
- When snapshotting the DOM, Cypress no longer causes `attributeChangedCallback`
  to be triggered on custom elements. Fixes
  [#7187](https://github.com/cypress-io/cypress/issues/7187).
- Spec files containing `+` characters now properly run in Cypress. Fixes
  [#5909](https://github.com/cypress-io/cypress/issues/5909).
- When using the `fx` shortcut in `cy.route()`, an error is now thrown when the
  fixture file cannot be found. Fixes
  [#7818](https://github.com/cypress-io/cypress/issues/7818).
- Cypress no longer thrown `Cannot read property '__error' of null` error when
  passing a file containing `null` content to
  [cy.fixture()](/api/commands/fixture). Fixes
  [#8010](https://github.com/cypress-io/cypress/issues/8010).
- Values containing exponential operators passed to `--env` via the command line
  are now properly read. Fixes
  [#6891](https://github.com/cypress-io/cypress/issues/6891).
- The "Open in IDE" button no longer disappears from hooks when the tests are
  manually rerun. Fixes
  [#8094](https://github.com/cypress-io/cypress/issues/8094).
- When [experimentalSourceRewriting](/app/references/experiments) is enabled,
  AST rewriting will no longer return an output before the body is done being
  written. This would happen when the response body was too large and the
  response would be sent while the body was still being modified. Fixes
  [#8043](https://github.com/cypress-io/cypress/issues/8043).
- When using [.type()](/api/commands/type), Cypress now properly types into an
  input within an iframe that auto focuses the input. Fixes
  [#8111](https://github.com/cypress-io/cypress/issues/8111).

**Misc:**

- Dependencies for our `cypress` npm package are no longer pinned to a specific
  version. This allows the use of `npm audit fix` to fix security
  vulnerabilities without needing a patch release from Cypress. Addresses
  [#8046](https://github.com/cypress-io/cypress/issues/8046).
- We now collect environment variables for AWS CodeBuild when recording to the
  Dashboard. Addressed
  [#8101](https://github.com/cypress-io/cypress/issues/8101).
- Types inside Module API are now accessible via the `CypressCommandLine`
  namespace. Addresses
  [#7309](https://github.com/cypress-io/cypress/issues/7309).
- We added more type definitions for the [.should()](/api/commands/should)
  command. Addresses [#5573](https://github.com/cypress-io/cypress/issues/5573).
- Cookie command's `expiry` property type is now a Number instead of a String.
  Addresses [#8144](https://github.com/cypress-io/cypress/issues/8144).
- There are some minor visual improvements to the Test Runner's Command Log when
  hovering, focusing and clicking on hook titles and pending tests. Addressed in
  [#8153](https://github.com/cypress-io/cypress/pull/8153).

**Dependency Updates:**

- Upgraded `jimp` from `0.13.0` to `0.14.0`. Addressed in
  [#8102](https://github.com/cypress-io/cypress/pull/8102).
- Upgraded `moment` from `2.26.0` to `2.27.0`. Addressed in
  [#8122](https://github.com/cypress-io/cypress/pull/8122).

## 4.11.0

_Released 07/21/2020_

**Features:**

- You can now pass an `ensureScrollability: false` option to
  [.scrollTo()](/api/commands/scrollto) to skip checking whether the element is
  scrollable. Addresses
  [#1924](https://github.com/cypress-io/cypress/issues/1924).
- [cy.clock()](/api/commands/clock) now accepts Dates as well as a Number for
  now. Fixes [#7786](https://github.com/cypress-io/cypress/issues/7786).
- The [Module API](/app/references/module-api) has a new
  `cypress.cli.parseRunArguments` function to assist in parsing user-supplied
  command line arguments using the same logic as `cypress run` uses. Addresses
  [#7760](https://github.com/cypress-io/cypress/issues/7760).

**Bugfixes:**

- Running multiple specs within Firefox during `cypress run` on Windows will no
  longer fail trying to make a connection to the browser. Fixes
  [#6392](https://github.com/cypress-io/cypress/issues/6392).
- Cypress will no longer throw a
  `Cannot read property 'isAttached' of undefined` error during `cypress run` on
  Firefox versions `>=75`. Fixes
  [#6813](https://github.com/cypress-io/cypress/issues/6813).
- Fixed an issue where Cypress tests in Chromium-family browsers could randomly
  fail with the error "WebSocket is already in CLOSING or CLOSED state." Fixes
  [#7180](https://github.com/cypress-io/cypress/issues/7180).
- Taking a screenshot of an element that changes height upon scroll will no
  longer throw an `invalid for option "size"` error. Fixes
  [#6099](https://github.com/cypress-io/cypress/issues/6099).
- Setting `viewportHeight` or `viewportWidth` from within the
  [test configuration](/app/core-concepts/writing-and-organizing-tests#Test-Configuration)
  now properly changes the viewport size for the duration of the suite or test.
- Setting deep objects and arrays on `config` within the `pluginsFile` now sets
  the values correctly. Fixes
  [#7959](https://github.com/cypress-io/cypress/issues/7959).
- The progress bar for `cy.wait()` now reflects the correct `requestTimeout` and
  `responseTimeout` of the command. Fixes
  [#7881](https://github.com/cypress-io/cypress/issues/7881).
- The command's progress bar will not longer restart when its parent test is
  collapsed in the Command Log. Fixes
  [#7912](https://github.com/cypress-io/cypress/issues/7912).
- Key value pairs sent to `ELECTRON_EXTRA_LAUNCH_ARGS` as `key=value` will now
  be properly read in. Fixes
  [#7994](https://github.com/cypress-io/cypress/issues/7994).
- Stubbed responses responding with an empty string to `cy.route()` now
  correctly display as 'xhr stub' in the Test Runner's Command Log. Fixes
  [#8018](https://github.com/cypress-io/cypress/issues/8018).
- Quickly reclicking the "Run All Tests" button in the Test Runners' Command Log
  will no longer throw errors about undefined properties and the tests will no
  longer hang. Fixes [#7968](https://github.com/cypress-io/cypress/issues/7968).

**Misc:**

- The error messages thrown from `pluginsFile` and `supportFile` now mention
  that `.ts` extensions are supported. Addresses
  [#7940](https://github.com/cypress-io/cypress/issues/7940).
- The style when focusing on tests in the Command Log has been updated.
  Addresses [#7855](https://github.com/cypress-io/cypress/issues/7855).

**Dependency Updates:**

- Upgraded `@benmalka/foxdriver` from `0.4.0` to `0.4.1`. Addressed in
  [#8040](https://github.com/cypress-io/cypress/pull/8040).
- Upgraded `firefox-profile` from `1.3.1` to `2.0.0`. Addressed in
  [#8000](https://github.com/cypress-io/cypress/pull/8000).
- Upgraded `fix-path` from `2.1.0` to `3.0.0`. Addressed in
  [#8028](https://github.com/cypress-io/cypress/pull/8028).
- Upgraded `human-interval` from `0.1.6` to `1.0.0`. Addressed in
  [#8031](https://github.com/cypress-io/cypress/pull/8031).
- Upgraded `lodash` from `4.17.15` to `4.17.19`. Addressed in
  [#7954](https://github.com/cypress-io/cypress/pull/7954).
- Upgraded `plist` from `2.1.0` to `3.0.1`. Addressed in
  [#8045](https://github.com/cypress-io/cypress/pull/8045).
- Upgraded `proxy-from-env` from `1.0.0` to `1.1.0`. Addressed in
  [#7900](https://github.com/cypress-io/cypress/pull/7900).
- Upgraded `resolve` from `1.13.1` to `1.17.0`. Addressed in
  [#7989](https://github.com/cypress-io/cypress/pull/7989).
- Upgraded `systeminformation` from `4.21.1` to `4.26.9`. Addressed in
  [#7975](https://github.com/cypress-io/cypress/pull/7975).
- Upgraded `uuid` from `3.3.2` to `8.2.0`. Addressed in
  [#7976](https://github.com/cypress-io/cypress/pull/7976),
  [#8002](https://github.com/cypress-io/cypress/pull/8002), and
  [#8011](https://github.com/cypress-io/cypress/pull/8011).

## 4.10.0

_Released 07/07/2020_

**Features:**

- You can open a `before`, `beforeEach`, `after`, and `afterEach` hook
  definition in your IDE from the Test Runner's
  [Command Log](/app/core-concepts/open-mode#Command-Log) by clicking the
  **Open in IDE** button. Addresses
  [#7793](https://github.com/cypress-io/cypress/issues/7793).
- `before`, `beforeEach`, `after`, and `afterEach` hook definitions now display
  separately in the Test Runner's
  [Command Log](/app/core-concepts/open-mode#Command-Log) when defined in
  separate hook definitions. Addresses
  [#7779](https://github.com/cypress-io/cypress/issues/7779).
- You can now open a spec file directly from the **Tests** tab in the Test
  Runner by clicking the **Open in IDE** button. Addresses
  [#7713](https://github.com/cypress-io/cypress/issues/7713)

**Bugfixes:**

- HTTP requests taking longer than the default `responseTimeout` will no longer
  be prematurely canceled by the Cypress proxy layer. Fixes
  [#6426](https://github.com/cypress-io/cypress/issues/6426).
- Using Cypress commands to traverse the DOM on an application with a global
  `parent` variable will no longer throw Illegal Invocation errors. Fixes
  [#6412](https://github.com/cypress-io/cypress/issues/6412).
- When `experimentalShadowDomSupport`
  is enabled, using [.type()](/api/commands/type) on an input in the Shadow DOM
  will not result in an error. Fixes
  [#7741](https://github.com/cypress-io/cypress/issues/7741).
- When `experimentalShadowDomSupport`
  is enabled, checking for visibility on a shadow dom host element will no
  longer hang if the host element was the foremost element and had an ancestor
  with fixed position. Fixes
  [#7893](https://github.com/cypress-io/cypress/issues/7893).
- Debug logs from the `@benmalka/foxdriver` module will no longer appear if any
  `DEBUG` environment variable was set. Fixed
  [#7723](https://github.com/cypress-io/cypress/issues/7723).

**Misc:**

- We made some minor UI updates to the Test Runner. Addresses
  [#7732](https://github.com/cypress-io/cypress/issues/7732) and
  [#7803](https://github.com/cypress-io/cypress/issues/7803).

**Dependency Updates:**

- Upgraded `recast` from `0.18.8` to `0.19.1`. Addressed in
  [#7898](https://github.com/cypress-io/cypress/pull/7898).

## 4.9.0

_Released 06/23/2020_

**Features:**

- An animated progress bar now displays on every command in the
  [Command Log](/app/core-concepts/open-mode#Command-Log) indicating how
  long the command has left to run before reaching its command timeout.
  Addresses [#7642](https://github.com/cypress-io/cypress/issues/7642).
- There is now an [experimentalFetchPolyfill](/app/references/experiments)
  configuration option. When this option is `true`, Cypress will automatically
  replace `window.fetch` with a polyfill that Cypress can spy on and stub.
  Addresses [#7710](https://github.com/cypress-io/cypress/issues/7710).
- You can now pass a `--quiet` flag to
  [cypress run](/app/references/command-line#cypress-run) to silence any Cypress
  specific output from stdout. Addresses
  [#7714](https://github.com/cypress-io/cypress/issues/7714).

**Bugfixes:**

- [cy.wait()](/api/commands/wait) now correctly resolves when waiting for XHR
  requests that contain resource-like text in the XHR's query params or hash
  (like `.js`, .`html`, `.css`).
  [#7280](https://github.com/cypress-io/cypress/issues/7280).
- We fixed a regression in [4.6.0](#4-6-0) where errors thrown from the
  application under test as strings would not be correctly handled. Fixes
  [#7590](https://github.com/cypress-io/cypress/issues/7590).
- We fixed a regression in [4.8.0](#4-8-0) where [.click()](/api/commands/click)
  would hang if the subject had a shadow root and
  `experimentalShadowDomSupport` was
  not enabled. Fixes [#7679](https://github.com/cypress-io/cypress/issues/7679).
- We fixed a regression in [4.6.0](#4-6-0) so that
  [`.should('have.value')`](/api/commands/should) now properly asserts against
  `<progress>`, `<meter>` or `<li>` element's values. Fixes
  [#7603](https://github.com/cypress-io/cypress/issues/7603).
- Cypress no longer responds with 413 responses during a recorded `cypress run`
  when the stdout is too large. Fixes
  [#7548](https://github.com/cypress-io/cypress/issues/7548).
- We fixed an issue where Cypress could exit successfully even with failing
  tests when launched in global mode. Fixes
  [#7755](https://github.com/cypress-io/cypress/issues/7755).
- Assertion logs now properly display as parent commands in the
  [Command Log](/app/core-concepts/open-mode#Command-Log) regardless of
  what is in the `beforeEach` hook. Fixes
  [#7731](https://github.com/cypress-io/cypress/issues/7731).
- When `experimentalShadowDomSupport`
  is enabled, querying shadow dom in certain situations will no longer cause the
  error `Cannot read property 'length' of undefined` during `cypress run`. Fixes
  [#7676](https://github.com/cypress-io/cypress/issues/7676).
- Highlighting of elements upon hover of a command in the
  [Command Log](/app/core-concepts/open-mode#Command-Log) are now visible
  when targeting absolute positioned elements. Fixes
  [#7762](https://github.com/cypress-io/cypress/issues/7762).
- [cypress run](/app/references/command-line#cypress-run) will no longer crash
  when provided an empty string to the `--project` flag. Fixes
  [#7743](https://github.com/cypress-io/cypress/issues/7743).

**Misc:**

- There is now a loading state to indicate when tests are loading in the
  [Command Log](/app/core-concepts/open-mode#Command-Log). Addresses
  [#7700](https://github.com/cypress-io/cypress/issues/7700).
- The type definitions for `fixturesFolder`, `pluginsFile`, `screenshotsFolders`
  and `videoCompression` have been updated to allow `false` TypeScript types.
  Addresses [#7654](https://github.com/cypress-io/cypress/issues/7654).
- The type definitions for `cy.wait(ms)` now correctly yield the type of the
  previous subject. Addresses
  [#7682](https://github.com/cypress-io/cypress/issues/7682).
- The type definitions now allow for the 'key' keyword when chaining off 'any'
  or 'all' assertion chainers. Addresses
  [#7665](https://github.com/cypress-io/cypress/issues/7665).

**Dependency Updates:**

- Upgraded `arch` from `2.1.1` to `2.1.2`. Addressed in
  [#7672](https://github.com/cypress-io/cypress/pull/7672).
- Upgraded `eventemitter2` from `4.1.2` to `6.4.2`. Addressed in
  [#7705](https://github.com/cypress-io/cypress/pull/7705) and
  [#7707](https://github.com/cypress-io/cypress/pull/7707).
- Upgraded `getos` from `3.1.1` to `3.2.1`. Addressed in
  [#7685](https://github.com/cypress-io/cypress/pull/7685).
- Upgraded `is-installed-globally` from `0.1.0` to `0.3.2`. Addressed in
  [#7703](https://github.com/cypress-io/cypress/pull/7703).
- Upgraded `jimp` from `0.12.0` to `0.13.0`. Addressed in
  [#7618](https://github.com/cypress-io/cypress/pull/7618).
- Upgraded `moment` from `2.24.0` to `2.26.0`. Addressed in
  [#7718](https://github.com/cypress-io/cypress/pull/7718).
- Upgraded `signal-exit` from `3.0.2` to `3.0.3`. Addressed in
  [#7738](https://github.com/cypress-io/cypress/pull/7738).

## 4.8.0

_Released 06/08/2020_

**Features:**

- You can now apply certain
  [test configuration](/app/references/configuration#Test-Configuration) for
  the duration of a suite or test by passing a configuration object to the test
  or suite as the second argument. Addresses
  [#7167](https://github.com/cypress-io/cypress/issues/7167).
- [Cypress.isBrowser()](/api/cypress-api/isbrowser) has been expanded to allow
  for new matcher arguments to assist in filtering matching browsers. Addresses
  [#7168](https://github.com/cypress-io/cypress/issues/7168).
- We now display the currently running file at the top of the Test Runner's
  Command Log.
  [That file can be opened](/app/core-concepts/open-mode#Open-files-in-your-IDE)
  in your
  [preferred file opener](/app/tooling/IDE-integration#File-Opener-Preference)
  by clicking the file. Addresses
  [#7506](https://github.com/cypress-io/cypress/issues/7506).
- We added experimental shadow DOM support through the
  `experimentalShadowDomSupport`
  option. See the [Experiments page](/app/references/experiments#History)
  for more information. Addresses
  [#144](https://github.com/cypress-io/cypress/issues/144).

**Bugfixes:**

- Upon domain navigation, `before` and `after` hooks defined in completed suites
  no longer erroneously rerun. Fixes
  [#1987](https://github.com/cypress-io/cypress/issues/1987).
- Errors thrown within root level `after` hooks now correctly display in the
  Test Runner's Command Log. Fixes
  [#2296](https://github.com/cypress-io/cypress/issues/2296).
- We fixed a regression in [4.6.0](#4-6-0) where an XHR response without a body
  would cause Cypress to throw `Cannot read property '__error' of null`. Fixes
  [#7518](https://github.com/cypress-io/cypress/issues/7518).
- We fixed a regression in [4.6.0](#4-6-0) where using
  [cy.visit()](/api/commands/visit) to an authenticated URL would error with
  `Request cannot be constructed from a URL that includes credentials: /__cypress/runner/./wasm/mappings.wasm`
  Fixes [#7481](https://github.com/cypress-io/cypress/issues/7481).
- We now properly load code from the `pluginsFile` or `supportFile` when they
  are TypeScript files. Fixes
  [#7459](https://github.com/cypress-io/cypress/issues/7459).
- utf-8 characters now properly display within error code frames. Fixes
  [#7507](https://github.com/cypress-io/cypress/issues/7507).
- Errors thrown in a
  [`cy.on('fail', fn)`](/api/cypress-api/catalog-of-events#Cypress-Events) fail
  handler now display a stack trace and code frame pointing to the origin of the
  error. Fixes [#7512](https://github.com/cypress-io/cypress/issues/7512).
- [.click()](/api/commands/click) now properly clicks on wrapped inline elements
  when the first child element in the parent element has no width or height.
  Fixes [#7343](https://github.com/cypress-io/cypress/issues/7343) and
  [#7012](https://github.com/cypress-io/cypress/issues/7012).
- [cy.wrap()](/api/commands/wrap) now properly respects the `timeout` option. It
  also better handles situations when passed a promise that never resolves.
  Fixes [#5980](https://github.com/cypress-io/cypress/issues/5980).
- When [experimentalSourceRewriting](/app/references/experiments) is enabled,
  Cypress will no longer exit with SIGABRT in certain situations. Fixes
  [#7572](https://github.com/cypress-io/cypress/issues/7572).
- We fixed a regression in [3.8.0](#3-8-0) where the "Tests" button in the Test
  Runner wouldn't take you back to the tests list in all browsers. Fixes
  [#5948](https://github.com/cypress-io/cypress/issues/5948).
- Using the `S` shortcut during [.pause()](/api/commands/pause) no longer does
  anything. This prevents the Test Runner from getting into a 'stuck' state.
  Fixes [#6867](https://github.com/cypress-io/cypress/issues/6867).

**Misc:**

- The design of errors and some iconography displayed in the Test Runner's
  Command Log have been updated. Addresses
  [#7499](https://github.com/cypress-io/cypress/issues/7499),
  [#7542](https://github.com/cypress-io/cypress/issues/7542) and
  [#7563](https://github.com/cypress-io/cypress/issues/7563).
- The commands in the Test Runner's Command Log now display in the same casing
  as the original command. Addresses
  [#5773](https://github.com/cypress-io/cypress/issues/5773).
- The navigation links in the Test Runner now display the correct CSS styles
  when focused. Addresses
  [#7491](https://github.com/cypress-io/cypress/issues/7491).
- [Cypress.config()](/api/cypress-api/config) now has TypeScript types for the
  `taskTimeout` option. Addresses
  [#7531](https://github.com/cypress-io/cypress/issues/7531).
- TypeScript types for [cy.screenshot()](/api/commands/screenshot) options and
  [Cypress.log()](/api/cypress-api/cypress-log) have been updated to be more
  accurate. Addresses
  [#7445](https://github.com/cypress-io/cypress/issues/7445).
- TypeScript types for `Cypress.automation` have been added. Addresses
  [#7519](https://github.com/cypress-io/cypress/issues/7519).
- We now display a more accurate error message when passing a browser to the
  `--browser` flag that is not supported by Cypress. Addresses
  [#6979](https://github.com/cypress-io/cypress/issues/6979).
- We're continuing to make progress in converting our codebase from CoffeeScript
  to JavaScript. Addresses
  [#2690](https://github.com/cypress-io/cypress/issues/2690) in
  [#7588](https://github.com/cypress-io/cypress/pull/7588) and
  [#7591](https://github.com/cypress-io/cypress/pull/7591).

**Dependency Updates:**

- Upgraded `chrome-remote-interface` from `0.28.1` to `0.28.2`. Addressed in
  [#7615](https://github.com/cypress-io/cypress/pull/7615).
- Upgraded `electron` from `8.3.0` to `8.3.1`. Addressed in
  [#7599](https://github.com/cypress-io/cypress/pull/7599).

## 4.7.0

_Released 05/26/2020_

**Features:**

- [cy.request()](/api/commands/request) now supports an `encoding` option that
  can be used to set the encoding of the response body, defaulting to `utf-8`.
  Addresses [#2029](https://github.com/cypress-io/cypress/issues/2029) and
  [#3576](https://github.com/cypress-io/cypress/issues/3576).

**Bugfixes:**

- We fixed a regression in [4.6.0](#4-6-0) where the address bar of the
  application under test would disappear when scrolling commands ran and the
  application under test would visually shift after taking screenshots. Fixes
  [#7443](https://github.com/cypress-io/cypress/issues/7443) and
  [#7466](https://github.com/cypress-io/cypress/issues/7466).
- We fixed a regression in [4.6.0](#4-6-0) where test runs could hang when
  loading spec files with source maps. Fixes
  [#7464](https://github.com/cypress-io/cypress/issues/7464).

**Misc:**

- We now display a more descriptive error message when the plugins file does not
  export a function. Addresses
  [#6611](https://github.com/cypress-io/cypress/issues/6611).

## 4.6.0

_Released 05/20/2020_

**Features:**

- [Errors](/app/guides/debugging#Errors) in the Test Runner now display a
  code frame to preview where the failure occurred with the relevant file, line
  number, and column number highlighted. Clicking on the file link will open the
  file in your
  [preferred file opener](/app/tooling/IDE-integration#File-Opener-Preference)
  and highlight the line and column in editors that support it. Addresses
  [#3762](https://github.com/cypress-io/cypress/issues/3762).
- Cypress now utilizes [source maps](/app/guides/debugging#Source-maps) to
  enhance the error experience. Stack traces are translated so that your source
  files are shown instead of the generated file that is loaded by the browser.
  Cypress will include an inline source map in your spec file. If you
  [modify the preprocessor](/api/node-events/preprocessors-api), ensure that inline
  source maps are enabled to get the same experience. Users of
  `@cypress/webpack-preprocessor` should upgrade to v5.4.1 or later of the
  package which will correctly inline source maps. Addresses
  [#881](https://github.com/cypress-io/cypress/issues/881),
  [#1761](https://github.com/cypress-io/cypress/issues/1761) and
  [#3966](https://github.com/cypress-io/cypress/issues/3966).
- Cypress now enables AST-based JS/HTML rewriting when setting the
  [experimentalSourceRewriting](/app/references/experiments) configuration
  option to `true`. Addresses
  [#5273](https://github.com/cypress-io/cypress/issues/5273).
- Number arguments passed to `have.text`, `have.id`, `have.data`, `have.value`,
  and `have.attr`
  [assertions chainers](/app/references/assertions#Chai-jQuery) are now
  automatically cast to strings for comparison. Addresses
  [#7314](https://github.com/cypress-io/cypress/issues/7314).

**Bugfixes:**

- Default [TypeScript](/app/tooling/typescript-support) options are now set
  to `module: commonJS` which Node.js and the browser expect. This fixes a
  situation where setting a different module in a `tsconfig.json` would cause
  errors to throw if you had `export`, `import` or `async` keywords in your
  code. Fixes [#7005](https://github.com/cypress-io/cypress/issues/7005),
  [#7011](https://github.com/cypress-io/cypress/issues/7011),
  [#7043](https://github.com/cypress-io/cypress/issues/7043), and
  [#7151](https://github.com/cypress-io/cypress/issues/7151).
- When [experimentalSourceRewriting](/app/references/experiments) is enabled,
  setting `location` or `location.href` to a relative href, or using
  `location.replace` or `location.assign` with a relative href will no longer
  navigate the AUT to the wrong URL. Fixes
  [#3975](https://github.com/cypress-io/cypress/issues/3975) and
  [#3994](https://github.com/cypress-io/cypress/issues/3994).
- When [experimentalSourceRewriting](/app/references/experiments) is enabled,
  the use of `window.top` and `window.parent` will no longer cause the AUT to
  break out of the Cypress iframe. Fixes
  [#5271](https://github.com/cypress-io/cypress/issues/5271) and
  [#1467](https://github.com/cypress-io/cypress/issues/1467).
- When [experimentalSourceRewriting](/app/references/experiments) is enabled,
  calls to `window.frames`, `window.parent.frames`, and other `frames` will no
  longer point to the wrong reference after being proxied through Cypress. Fixes
  [#2664](https://github.com/cypress-io/cypress/issues/2664).
- When [experimentalSourceRewriting](/app/references/experiments) is enabled,
  scripts using the `integrity` attribute for sub-resource integrity (SRI) will
  now load after being proxied through Cypress. Fixes
  [#2393](https://github.com/cypress-io/cypress/issues/2393).
- When [experimentalSourceRewriting](/app/references/experiments) is enabled,
  the use of `document.location` to set the URL will no longer navigate the AUT
  to the wrong URL. Fixes
  [#7402](https://github.com/cypress-io/cypress/issues/7402).
- Type definitions will no longer conflict when running Cypress in a project
  with Jest. Fixes [#3536](https://github.com/cypress-io/cypress/issues/3536).
- We increased the timeout for launching Firefox from 2.5 seconds to 50 seconds.
  Previously, users hitting this limit would encounter a "cannot open socket"
  error; now, the error will be wrapped. Fixes
  [#7159](https://github.com/cypress-io/cypress/issues/7159).
- [.click](/api/commands/click) will now click in the correct coordinates when
  either x or y coordinate options are zero. Fixes
  [#7319](https://github.com/cypress-io/cypress/issues/7319).
- Cypress no longer displays `onError is not a function` when a browser can't
  connect. Fixes [#7217](https://github.com/cypress-io/cypress/issues/7217).
- You can now pass the `force: true` option to [.select()](/api/commands/select)
  to select options within a disabled `<select>`. Addresses
  [#107](https://github.com/cypress-io/cypress/issues/107).
- We now throw an error when attempting to [.select()](/api/commands/select) an
  `<option>` within a disabled `<optgroup>`. Fixes
  [#7226](https://github.com/cypress-io/cypress/issues/7226).
- We fixed a regression in [4.3.0](#4-3-0) where the message output during
  errors were not formatted correctly. Fixes
  [#6924](https://github.com/cypress-io/cypress/issues/6924).
- Using [Cypress.\_.capitalize](/api/utilities/_) now correctly behaves the same
  as Lodash's capitalize method. Fixes
  [#7222](https://github.com/cypress-io/cypress/issues/7222).
- When `experimentalComponentTesting` is enabled, clicking on a component spec
  now watches the correct file without assuming it is an integration file. Fixes
  [#7244](https://github.com/cypress-io/cypress/issues/7244).
- Firefox video recording no longer crashes Cypress when running very short spec
  files. Fixes [#6408](https://github.com/cypress-io/cypress/issues/6408).
- Applications containing a DOM element with an id attribute containing 'jquery'
  will no longer throw an error during [cy.visit()](/api/commands/visit). Fixes
  [#6193](https://github.com/cypress-io/cypress/issues/6193).
- Long errors generated when compiling or bundling the test file are now
  horizontally scrollable. Fixes
  [#6898](https://github.com/cypress-io/cypress/issues/6898).

**Misc:**

- Cypress no longer requires write access to the root of the project, it instead
  will display a warning when no write access is given. Addresses
  [#1281](https://github.com/cypress-io/cypress/issues/1281).
- We increased the timeout for launching Chrome from 20 seconds to 50 seconds.
  Addressed in [#7372](https://github.com/cypress-io/cypress/pull/7372).
- We increased the timeout for macOS or Linux to exit from a `--version` command
  when looking for available browsers from 5 seconds to 30 seconds. Addressed in
  [#7366](https://github.com/cypress-io/cypress/pull/7366).
- We improved error handling when Cypress launches Chromium-family browsers.
  Addresses [#6518](https://github.com/cypress-io/cypress/issues/6518).
- We now export `Cypress.ConfigOptions` types as a partial of the full options
  interface. Addresses
  [#7238](https://github.com/cypress-io/cypress/issues/7238).
- We're continuing to make progress in converting our codebase from CoffeeScript
  to JavaScript. Addresses
  [#2690](https://github.com/cypress-io/cypress/issues/2690) in
  [#7162](https://github.com/cypress-io/cypress/pull/7162),
  [#7216](https://github.com/cypress-io/cypress/pull/7216),
  [#7227](https://github.com/cypress-io/cypress/pull/7227),
  [#7320](https://github.com/cypress-io/cypress/pull/7320),
  [#7232](https://github.com/cypress-io/cypress/pull/7232), and
  [#7345](https://github.com/cypress-io/cypress/pull/7345).

**Dependency Updates:**

- Upgraded `@cypress/browserify-preprocessor` from `2.2.2` to `2.2.3`. Addressed
  in [#7291](https://github.com/cypress-io/cypress/pull/7291).
- Upgraded `cookie-parser` from `1.4.4` to `1.4.5`. Addressed in
  [#7389](https://github.com/cypress-io/cypress/pull/7389).
- Upgraded `cypress-multi-reporters` from `1.2.4` to `1.4.0`. Addressed in
  [#7431](https://github.com/cypress-io/cypress/pull/7431).
- Upgraded `electron` from `8.2.3` to `8.3.0`. Addressed in
  [#7236](https://github.com/cypress-io/cypress/pull/7236) and
  [#7387](https://github.com/cypress-io/cypress/pull/7387).
- Upgraded `image-size` from `0.7.4` to `0.8.3`. Addressed in
  [#7236](https://github.com/cypress-io/cypress/pull/7236).
- Upgraded `jimp` from `0.9.3` to `0.12.0`. Addressed in
  [#7408](https://github.com/cypress-io/cypress/pull/7408).
- Upgraded `return-deep-diff` from `0.3.0` to `0.4.0`. Addressed in
  [#7292](https://github.com/cypress-io/cypress/pull/7292).

## 4.5.0

_Released 04/28/2020_

**Features:**

- Cypress now supports the execution of component tests using framework-specific
  adaptors when setting the `experimentalComponentTesting` configuration option
  to `true`. For more details see the
  [@cypress/react](https://github.com/cypress-io/cypress/tree/master/npm/react)
  and [@cypress/vue](https://github.com/cypress-io/cypress/tree/master/npm/vue)
  repos. Addresses [#5922](https://github.com/cypress-io/cypress/issues/5922)
  and [#6968](https://github.com/cypress-io/cypress/issues/6968).

**Bugfixes:**

- [Custom Mocha reporters](/app/tooling/reporters) will now correctly use the
  version of Mocha bundled with Cypress. Fixes
  [#3537](https://github.com/cypress-io/cypress/issues/3537) and
  [#6984](https://github.com/cypress-io/cypress/issues/6984).
- We better account for word boundaries in application scripts when
  `modifyObstructiveCode` is `true`. Fixes
  [#7138](https://github.com/cypress-io/cypress/issues/7138).
- Fixed an issue where iterators in TypeScript were not properly transpiled.
  Fixes [#7098](https://github.com/cypress-io/cypress/issues/7098).

**Misc:**

- The update window in the Test Runner now encourages yarn users to
  `yarn upgrade` Cypress instead of `yarn add` to help prevent installing 2
  versions of Cypress when using yarn workspaces. Addressed in
  [#7101](https://github.com/cypress-io/cypress/pull/7101).
- We're continuing to make progress in converting our codebase from CoffeeScript
  to JavaScript. Addresses
  [#2690](https://github.com/cypress-io/cypress/issues/2690) in
  [#7031](https://github.com/cypress-io/cypress/pull/7031) and
  [#7097](https://github.com/cypress-io/cypress/pull/7097).

**Dependency Updates:**

- Upgraded `electron` from `8.2.0` to `8.2.3`. Addressed in
  [#7079](https://github.com/cypress-io/cypress/pull/7079).

## 4.4.1

_Released 04/20/2020_

**Bugfixes:**

- Cypress can now launch on systems where Chromium is installed via Snapcraft.
  Fixes [#7020](https://github.com/cypress-io/cypress/issues/7020).
- We now check whether the `mouseup` event's target element is detached before
  issuing the `click` event during [.click()](/api/commands/click). Fixes
  [#6923](https://github.com/cypress-io/cypress/issues/6923).
- We fixed a regression in [3.8.1](#3-8-1) where the Test Runner could send an
  `undefined` organization ID during project setup when the default organization
  is preselected. Fixes
  [#7013](https://github.com/cypress-io/cypress/issues/7013).
- We fixed a regression in [4.4.0](#4-4-0) that caused projects to include
  bundled TypeScript. Fixes
  [#7036](https://github.com/cypress-io/cypress/issues/7036).
- Fixed an issue where sites that set `Feature-Policy: document-domain 'none'`
  headers would fail to load in Cypress. Fixes
  [#6480](https://github.com/cypress-io/cypress/issues/6480).

**Misc:**

- We fixed some extra spacing displaying below the project nav in the Test
  Runner. Addresses [#7023](https://github.com/cypress-io/cypress/issues/7023)
- The typings for run results when using the
  [Module API](/app/references/module-api) now indicate they can be `null` or
  `undefined`. Addresses
  [#6126](https://github.com/cypress-io/cypress/issues/6126).
- We're continuing to make progress in converting our codebase from CoffeeScript
  to JavaScript. Addresses
  [#2690](https://github.com/cypress-io/cypress/issues/2690) in
  [#7004](https://github.com/cypress-io/cypress/pull/7004).

## 4.4.0

_Released 04/13/2020_

**Features:**

- [TypeScript](/app/tooling/typescript-support) test files are now supported
  without using special preprocessors plugins. Addresses
  [#1859](https://github.com/cypress-io/cypress/issues/1859).

**Bugfixes:**

- We fixed an issue where Cypress could crash with a
  `This socket has been ended by the other party` error when testing
  applications that make use of WebSockets. Fixes
  [#6458](https://github.com/cypress-io/cypress/issues/6458).
- Uncaught errors thrown from within application or test code now display their
  proper stack trace. Fixes
  [#6964](https://github.com/cypress-io/cypress/issues/6964).
- Assertion errors now include a stack trace that includes the calling code.
  Fixes [#6969](https://github.com/cypress-io/cypress/issues/6969).
- We now clone the `options` object passed into Cypress commands so that they're
  not mutated and receive the proper `options`. Fixes
  [#3171](https://github.com/cypress-io/cypress/issues/3171).
- We fixed an issue where invalid `Set-Cookie` values could cause requests to
  fail with a `cannot read property key of undefined` error. Now, invalid
  `Set-Cookie` values will be ignored. Fixes
  [#6890](https://github.com/cypress-io/cypress/issues/6890).

**Misc:**

- Cypress no longer hides output from `cypress --version`, `cypress version`,
  `cypress cache path`, or `cypress cache list` commands when npm log level is
  `silent` or `warn`. Addresses
  [#2705](https://github.com/cypress-io/cypress/issues/2705).
- The [cy.task()](/api/commands/task) error message is now more specific about
  the promise resolution value required. Addresses
  [#6241](https://github.com/cypress-io/cypress/issues/6241).

**Dependency Updates:**

- Upgraded `http-proxy` from `1.17.0` to `1.18.0`. Addressed in
  [#6934](https://github.com/cypress-io/cypress/pull/6934).

## 4.3.0

_Released 03/30/2020_

**Features:**

- [Errors shown in the Test Runner](/app/guides/debugging#Errors) have a new
  design including an expandable stack trace, better highlighting of code
  elements, and 'Learn more' links that link to relevant Cypress documentation.
  This is part of our larger improvements to error display with more exciting
  features to come. Addresses
  [#3762](https://github.com/cypress-io/cypress/issues/3762).
- When you open a Cypress project, clicking on the **Settings** tab and clicking
  into the **Experiments** panel will display the
  [experimental features](/app/references/configuration#Experiments) that are
  available and whether they are enabled for your project.
- Added support for setting cookie `sameSite` values via `cy.setCookie()`.
  Addresses [#2437](https://github.com/cypress-io/cypress/issues/2437).
- Added experimental support for adding `sameSite` values to the objects yielded
  from [cy.setCookie()](/api/commands/setcookie),
  [cy.getCookie()](/api/commands/getcookie), and
  [cy.getCookies()](/api/commands/getcookies). Users can enable this by setting
  the
  [experimentalGetCookiesSameSite](/app/references/configuration#Experiments)
  configuration value to `true`. In Cypress 5, this will be the default.
  Addresses [#2437](https://github.com/cypress-io/cypress/issues/2437).
- Added support for the `SameSite` cookie attribute in `cy.request()`,
  `cy.visit()`, and proxied HTTP requests. Addresses
  [#6757](https://github.com/cypress-io/cypress/issues/6757).
- When an assertion is retried (using [.should()](/api/commands/should)) and
  fails, it now shows the diff in the `stdout`. Addresses
  [#6722](https://github.com/cypress-io/cypress/issues/6722).

**Bugfixes:**

- Fixed a regression in [4.2.0](#4-2-0) where cypress installation could fail if
  Git is not installed. Fixes
  [#6752](https://github.com/cypress-io/cypress/issues/6752).
- Fixed a regression in [3.5.0](#3-5-0) where certain HTTP requests could fail
  with `Parse Error: Invalid header value char` or
  `Parse Error: Header overflow`. Fixes
  [#5602](https://github.com/cypress-io/cypress/issues/5602).
- Fixed a regression in [4.2.0](#4-2-0) where Electron deprecation warnings were
  printed to stderr in open mode. Fixes
  [#6750](https://github.com/cypress-io/cypress/issues/6750).
- Cookies set with a Domain containing an unknown TLD are now sent along for all
  requests. For example, a cookie like `foo=bar; Domain=.cypress.test` will now
  be sent during [cy.request()](/api/commands/request) to
  `http://local.cypress.test`. Fixes
  [#6628](https://github.com/cypress-io/cypress/issues/6628).
- We fixed a situation where a cross-origin errors could incorrectly throw in
  Chrome. Fixes [#5270](https://github.com/cypress-io/cypress/issues/5270).
- Visibility checks against `vue-fragment` elements no longer throw an
  unexpected error. Fixes
  [#6745](https://github.com/cypress-io/cypress/issues/6745).
- The stack trace is now properly shown in the console when clicking the command
  for tests having an `.only` that throw an error. Fixes
  [#6744](https://github.com/cypress-io/cypress/issues/6744).
- `firefoxGcInterval` can now correctly be set to `null`. Fixes
  [#6825](https://github.com/cypress-io/cypress/issues/6825).
- Cypress will no longer crash the process if an empty video chunk is received.
  Addressed in [#6818](https://github.com/cypress-io/cypress/pull/6818).
- Assertions failures on DOM elements no longer show unexpected diffs when they
  weren't retried. Fixes
  [#6723](https://github.com/cypress-io/cypress/issues/6723).

**Misc:**

- Security warnings no longer show in Mac OS when opening Cypress since our
  application now undergoes notarization from Apple. Addresses
  [#5791](https://github.com/cypress-io/cypress/issues/5791).
- The previously used spec filter in the Test Runner is now saved and restored
  for projects without an ID.Addresses
  [#6739](https://github.com/cypress-io/cypress/issues/6739).
- We collect more env information from Travis builds for potential use in the
  Cypress Dashboard. Addresses
  [#6808](https://github.com/cypress-io/cypress/issues/6808).
- We now collect env information from Netlify builds (for example when using
  [cypress-io/netlify-plugin-cypress](https://github.com/cypress-io/netlify-plugin-cypress))
  to send along to the Cypress Dashboard. Addresses
  [#6780](https://github.com/cypress-io/cypress/issues/6780).
- Type added for `tag` property when using Module API. Addresses
  [#6795](https://github.com/cypress-io/cypress/issues/6795).
- We're continuing to make progress in converting our codebase from CoffeeScript
  to JavaScript. Addresses
  [#2690](https://github.com/cypress-io/cypress/issues/2690) in
  [#6833](https://github.com/cypress-io/cypress/pull/6833).

**Dependency Updates**

- Upgraded Chrome browser version used during `cypress run` and when selecting
  Electron browser in `cypress open` from `80.0.3987.141` to `80.0.3987.158`.
  Addressed in [#6855](https://github.com/cypress-io/cypress/pull/6855).
- Upgraded `electron` from `8.1.1` to `8.2.0`. This bumps the bundled Chromium
  to `80.0.3987.158`. Addressed in
  [#6855](https://github.com/cypress-io/cypress/pull/6855).
- Upgraded `@benmalka/foxdriver` from `0.2.3` to `0.3.0`. Addressed in
  [#6592](https://github.com/cypress-io/cypress/pull/6592).
- Upgraded `@cypress/get-windows-proxy` from `1.6.0` to `1.6.1`. Addressed in
  [#6823](https://github.com/cypress-io/cypress/pull/6823).
- Upgraded `execa` from `1.0.0` to `4.0.0`. Addressed in
  [#6013](https://github.com/cypress-io/cypress/pull/6013).
- Upgraded `extract-zip` from `1.6.7` to `1.7.0`. Addresses
  [#6845](https://github.com/cypress-io/cypress/issues/6845) in
  [#6845](https://github.com/cypress-io/cypress/pull/6845).
- Upgraded `firefox-profile` from `1.3.0` to `1.3.1`. Addressed in
  [#6594](https://github.com/cypress-io/cypress/pull/6594).
- Upgraded `get-port` from `5.1.0` to `5.1.1`. Addressed in
  [#6854](https://github.com/cypress-io/cypress/pull/6854).
- Upgraded `mime` from `1.6.0` to `2.4.4`. Addressed in
  [#6764](https://github.com/cypress-io/cypress/pull/6764).
- Upgraded `minimist` from `1.2.2` to `1.2.5`. Addressed in
  [#6747](https://github.com/cypress-io/cypress/pull/6747).
- Upgraded `squirrelly` from `7.7.0` to `7.9.2`. Addressed in
  [#6735](https://github.com/cypress-io/cypress/pull/6735).

## 4.2.0

_Released 03/16/2020_

**Features:**

- Videos can now be recorded when running Electron in `--headed` mode. Addresses
  [#1767](https://github.com/cypress-io/cypress/issues/1767).
- [cypress cache list](/app/references/command-line#cypress-cache-list) now
  prints the last time the cached binary was accessed for each version present.
  Addresses [#6682](https://github.com/cypress-io/cypress/issues/6682).

**Bugfixes:**

- We fixed a regression in [3.8.3](#3-8-3) where HTTPS requests could experience
  slowdown. Fixes [#6659](https://github.com/cypress-io/cypress/issues/6659).
- We now detect some installations of Firefox that were previously undetected.
  Fixes [#6669](https://github.com/cypress-io/cypress/issues/6669).
- We fixed a race condition where an asynchronous error could fail to be caught
  when running the plugins file process. Fixes
  [#6570](https://github.com/cypress-io/cypress/issues/6570).
- We now more thoroughly ensure the parent of an element exists when recursively
  calling actionability checks in order to prevent some maximum call stack
  errors. Fixes [#6707](https://github.com/cypress-io/cypress/issues/6707).
- Specfiles containing `&` or `%` characters now correctly run instead of
  erroring. Fixes [#4210](https://github.com/cypress-io/cypress/issues/4210).
- We added support for running tests on Jira plugins even when Jira scripts were
  not minified. Fixes
  [#1436](https://github.com/cypress-io/cypress/issues/1436).
- We fixed a bug causing specs to hang after rerunning tests during
  `cypress open` when there was an exception if thrown in an `after` hook. Fixes
  [#6619](https://github.com/cypress-io/cypress/issues/6619).
- [cypress verify](/app/references/command-line#cypress-verify) no longer
  incorrectly prints messaging about this being the first time using that
  Cypress version. Fixes
  [#6607](https://github.com/cypress-io/cypress/issues/6607).
- Screenshots no longer fail to be taken in Electron when Cypress `DEBUG` logs
  are enabled. Fixes [#6662](https://github.com/cypress-io/cypress/issues/6662).

**Misc:**

- A warning is now printed when setting the reserved key `CYPRESS_INTERNAL_ENV`
  to a non-production value. Addresses
  [#6436](https://github.com/cypress-io/cypress/issues/6436).
- When DEBUG logs are printed from `cypress:launcher`, they now print a clearer
  log during browser detection for easier reading. Addresses
  [#6700](https://github.com/cypress-io/cypress/issues/6700).
- The Test Runner now renders ANSI colors when there is a syntax error in the
  spec file. Addresses
  [#6533](https://github.com/cypress-io/cypress/issues/6533).
- The Test Runner now has an icon indicating whether the specs list parent
  folder is collapsed. Addresses
  [#6277](https://github.com/cypress-io/cypress/issues/6277).
- There's better type information for [.click](/api/commands/click),
  [.dblclick](/api/commands/dblclick), and
  [.rightclick](/api/commands/rightclick) command's `position` argument.
  Addresses [#6341](https://github.com/cypress-io/cypress/issues/6341).
- There's a more robust type signature for [.its()](/api/commands/its) and
  [.invoke()](/api/commands/invoke). Addresses
  [#6431](https://github.com/cypress-io/cypress/issues/6431).
- Using [Cypress.dom.isDetached](/api/cypress-api/dom#Is-detached) no longer
  throws a type error in TypeScript projects. Addresses
  [#4408](https://github.com/cypress-io/cypress/issues/4408).
- Using [`cy.clearLocalStorage({ log:false })`](/api/commands/clearlocalstorage)
  no longer throws a type error in TypeScript projects. Addresses
  [#6615](https://github.com/cypress-io/cypress/issues/6615).
- We added types for [Cypress.sinon](/api/utilities/sinon). Addresses
  [#6720](https://github.com/cypress-io/cypress/issues/6720).
- We've added the foundational work required to support experimental features in
  the Test Runner. Addresses
  [#6257](https://github.com/cypress-io/cypress/issues/6257).

**Dependency Updates**

- Upgraded Chrome browser version used during `cypress run` and when selecting
  Electron browser in `cypress open` from `78` to `80`. Addressed in
  [#6555](https://github.com/cypress-io/cypress/pull/6555).
- Upgraded `electron` from `7.1.13` to `8.1.1`. This bumps the bundled Chromium
  to `80.0.3987.141` and the bundled Node to `12.13.0`. Addressed in
  [#6555](https://github.com/cypress-io/cypress/pull/6555).
- Upgraded `@ffmpeg-installer/ffmpeg` from `1.0.19` to `1.0.20`. Addressed in
  [#6686](https://github.com/cypress-io/cypress/pull/6686).
- Upgraded `minimist` from `1.2.0` to `1.2.2`. Addressed in
  [#6726](https://github.com/cypress-io/cypress/pull/6726).
- Replaced deprecated `request` with `cypress-io/request`. Addressed in
  [#6679](https://github.com/cypress-io/cypress/pull/6679).

## 4.1.0

_Released 02/28/2020_

**Features:**

- There is a new `cypress info` command to see the locally detected browsers and
  other information related to Cypress. Addresses
  [#4540](https://github.com/cypress-io/cypress/issues/4540).
- You can now click a 'Try Again' button to recheck if the server at the
  designated `baseUrl` is running within the warning message during
  `cypress open`. Addresses
  [#3284](https://github.com/cypress-io/cypress/issues/3284).
- There are "collapse all" and "expand all" links in the Test Runner's "Tests"
  tab to collapse or expand all folders within the "Integration Tests".
  Addresses [#6282](https://github.com/cypress-io/cypress/issues/6282).
- The plugins file function's [config](/api/node-events/configuration-api) argument
  now includes `projectRoot` (absolute path to the root of the project) and
  `configFile` (absolute path to the configuration file). Addresses
  [#5941](https://github.com/cypress-io/cypress/issues/5941).

**Bugfixes:**

- Fixed a regression in [4.0.2](#4-0-2) where Cypress could throw a "Maximum
  call stack size exceeded" error when transmitting a circular object over the
  internal WebSocket. Fixes
  [#6582](https://github.com/cypress-io/cypress/issues/6582).
- We fixed an issue where using Chromium-family browsers could cause Cypress to
  throw a "WebSocket is not open: readyState 3" error under certain conditions.
  Fixes [#5685](https://github.com/cypress-io/cypress/issues/5685).
- We now more thoroughly ensure the parent of an element exists when recursively
  calling visibility and existence checks in order to prevent some maximum call
  stack errors. Fixes
  [#4373](https://github.com/cypress-io/cypress/issues/4373).
- We fixed an issue where a maximum call stack error would throw in some
  circumstances when `xhr.onreadystatechange` is accessed. Fixes
  [#5864](https://github.com/cypress-io/cypress/issues/5864).
- We fixed a regression in [3.5.0](#3-5-0) where typing into an iframe with a
  body element with the contenteditable attribute would throw an error. Fixes
  [#5930](https://github.com/cypress-io/cypress/issues/5930).
- We now set the default window size when running Chrome headlessly to 1280x720.
  Fixes [#6210](https://github.com/cypress-io/cypress/issues/6210).
- We fixed an issue where `cypress install` would not complete on Node.js `8.0.0`.
  Fixes [#6512](https://github.com/cypress-io/cypress/issues/6512) and
  [#6568](https://github.com/cypress-io/cypress/issues/6568).
- [cy.clearLocalStorage()](/api/commands/clearlocalstorage) now properly accepts
  the `log` option to disable logging. Fixes
  [#6342](https://github.com/cypress-io/cypress/issues/6342).

**Misc:**

- The error messages displayed when rerouting to a non same-origin domain has
  been updated to more accurately reflect the rules around same-origin policy.
  Addresses [#6048](https://github.com/cypress-io/cypress/issues/6048).
- We fixed an error message that would display the wrong available browser
  families during validation. Addressed in
  [#6517](https://github.com/cypress-io/cypress/pull/6517).
- We fixed some typos in some of our error messages. Addressed in
  [#6508](https://github.com/cypress-io/cypress/pull/6508).
- We're collecting more environment variables when running Cypress with GitLab
  CI. Addresses [#6231](https://github.com/cypress-io/cypress/issues/6231).
- The typing of `cy.$$` has been updated to distinguish differences between it
  and `Cypress.$`. [More info here](/api/utilities/$#Cypress-vs-cy) Addresses
  [#2027](https://github.com/cypress-io/cypress/issues/2027).
- We're continuing to make progress in converting our codebase from CoffeeScript
  to JavaScript. Addresses
  [#2690](https://github.com/cypress-io/cypress/issues/2690) in
  [#6552](https://github.com/cypress-io/cypress/pull/6552),
  [#6523](https://github.com/cypress-io/cypress/pull/6523), and
  [#6545](https://github.com/cypress-io/cypress/pull/6545).

**Dependency Updates**

- Upgraded `electron` from `7.1.10` to `7.1.13`. Addressed in
  [#6566](https://github.com/cypress-io/cypress/pull/6566).

## 4.0.2

_Released 02/14/2020_

**Bugfixes:**

- We fixed a bug where tests in Firefox would not open on macOS if another
  instance of Firefox was open. Fixes
  [#6380](https://github.com/cypress-io/cypress/issues/6380).
- We fixed a regression in [4.0.0](#4-0-0) where using
  `.should('not.contain', ...)` chained after a
  [.contains()](/api/commands/contains) would produce unexpected results. Fixes
  [#6384](https://github.com/cypress-io/cypress/issues/6384).
- We fixed a regression in [4.0.0](#4-0-0) where non-top-level `require()`s in
  tests no longer worked. Fixes
  [#6403](https://github.com/cypress-io/cypress/issues/6403).
- Re-running a failed workflow in GitHub Actions now properly generates a new
  Dashboard run. Fixes
  [#6450](https://github.com/cypress-io/cypress/issues/6450).

**Misc:**

- We fixed incorrect type definitions for
  [Cypress.isBrowser](/api/cypress-api/isbrowser). Addresses
  [#6447](https://github.com/cypress-io/cypress/issues/6447).
- We improved the error experience when launching a browser fails. Addresses
  [#6432](https://github.com/cypress-io/cypress/issues/6432).
- We improved the error experience when visiting the Cypress server outside of a
  Cypress-launched browser. Addresses
  [#6435](https://github.com/cypress-io/cypress/issues/6435).

**Dependency Updates**

- Upgraded `@cypress/browserify-preprocessor` from `2.1.1` to `2.1.4`. Addressed
  in [#6419](https://github.com/cypress-io/cypress/pull/6419).

## 4.0.1

_Released 02/07/2020_

**Bugfixes:**

- Fixed a bug where Chromium could not be detected on macOS. Addresses
  [#6358](https://github.com/cypress-io/cypress/issues/6358).
- Fixed bugs where Edge and Firefox Nightly could not be detected on macOS.
  Addresses [#6354](https://github.com/cypress-io/cypress/issues/6354) and
  [#6345](https://github.com/cypress-io/cypress/issues/6345).
- Fixed a bug where 64-bit editions of Firefox could not be detected on Windows.
  Addresses [#6355](https://github.com/cypress-io/cypress/issues/6355).
- Fixed a bug where video recordings of Firefox would omit all frames from
  before the last cross-domain navigation of the test. Addresses
  [#6369](https://github.com/cypress-io/cypress/issues/6369).
- Fixed a bug where Cypress could crash with the message "cannot read property
  'on' of undefined" while running Firefox. Addresses
  [#6356](https://github.com/cypress-io/cypress/issues/6356).
- Corrected a link to the screenshot API documentation in the type definitions.
  Addresses [#6359](https://github.com/cypress-io/cypress/issues/6359).

**Misc:**

- Updated the default preferences set on Firefox to hide update notifications
  and otherwise improve the Firefox experience. Addresses
  [#6346](https://github.com/cypress-io/cypress/issues/6346).

## 4.0.0

_Released 02/06/2020_

**Summary:**

Cypress `4.0.0` includes support for
[Mozilla Firefox](https://www.mozilla.org/firefox/) browsers (beta support) and
[Microsoft Edge](https://www.microsoft.com/edge) (Chromium based) browsers which
is a big step forward for
[Cross Browser Testing](/app/guides/cross-browser-testing) in Cypress. We've
also updated many of the
[underlying tools](/app/references/bundled-libraries) behind Cypress that
bring new powerful features.

**Breaking Changes:**

<Icon name="exclamation-triangle" color="red" /> Please read our [Migration Guide](/app/references/migration-guide)
which explains the changes in more detail and how to change your code to migrate
to Cypress 4.0.**

- Mocha, Chai, and Sinon.JS has been upgraded which includes a number of
  breaking changes and new features. Addresses
  [#2528](https://github.com/cypress-io/cypress/issues/2528),
  [#2529](https://github.com/cypress-io/cypress/issues/2529),
  [#2866](https://github.com/cypress-io/cypress/issues/2866).
- During `before:browser:launch`, we no longer yield the second argument as an
  array of browser arguments and instead yield an `options` object with an
  `args` property in order to support more advanced browser launch options.
  Addresses [#6306](https://github.com/cypress-io/cypress/issues/6306).
- We updated the [Cypress browser objects](/api/node-events/browser-launch-api) of
  all Chromium-based browsers, including Electron, to have `chromium` set as
  their `family` field. Addresses
  [#6243](https://github.com/cypress-io/cypress/issues/6243).
- The
  [`--browser` flag](/app/references/command-line#cypress-run-browser-lt-browser-name-or-path-gt)
  no longer accepts `canary` as its sole argument to run Chrome Canary. You now
  have to specify `chrome:canary` to use the Chrome Canary browser. Addresses
  [#6243](https://github.com/cypress-io/cypress/issues/6243).
- [.contains()](/api/commands/contains) now ignores leading, trailing, duplicate
  whitespaces. Addresses [#92](https://github.com/cypress-io/cypress/issues/92).
- [cy.writeFile()](/api/commands/writefile) now yields `null` instead of the
  contents written to the file in order to more align with the behavior of `fs`.
  Addresses [#2466](https://github.com/cypress-io/cypress/issues/2466).
- Installing Cypress on your system now requires Node.js 8+. Addresses
  [#5632](https://github.com/cypress-io/cypress/issues/5632).
- Cypress no longer support CJSX. Addresses
  [#3469](https://github.com/cypress-io/cypress/issues/3469).

**Features:**

- [Mozilla Firefox](https://www.mozilla.org/firefox/) browsers now have beta
  support. Addresses [#1096](https://github.com/cypress-io/cypress/issues/1096).
- [Microsoft Edge](https://www.microsoft.com/edge) (Chromium based) browsers are
  now supported. Addresses
  [#5433](https://github.com/cypress-io/cypress/issues/5433).
- There is a new [Cypress.isBrowser()](/api/cypress-api/isbrowser) utility
  function. Addresses
  [#2023](https://github.com/cypress-io/cypress/issues/2023).
- We updated the [Cypress.browser](/api/cypress-api/browser) object with a new
  `channel` property which contains the release channel of the detected browser.
  Addresses [#6243](https://github.com/cypress-io/cypress/issues/6243).
- There is a new `matchCase` option for [.contains()](/api/commands/contains).
  Addresses [#2785](https://github.com/cypress-io/cypress/issues/2785).
- Appending `.only` to multiple tests or suites will now run all tests with the
  `.only` property. Addresses
  [#2828](https://github.com/cypress-io/cypress/issues/2828).
- The [`isFinite` assertion](/app/references/assertions) is now supported.
  Addresses [#5669](https://github.com/cypress-io/cypress/issues/5669).
- The `empty` assertion is now supported when used against Map objects.
  Addresses [#6072](https://github.com/cypress-io/cypress/issues/6072).
- The `nested` assertion chainer property is now supported. Addresses
  [#3080](https://github.com/cypress-io/cypress/issues/3080) and
  [#5004](https://github.com/cypress-io/cypress/issues/5004).

**Bugfixes:**

- A test or suite appended with an `.only` when multiple tests or suites
  contained the same title now run correctly. Fixes
  [#5345](https://github.com/cypress-io/cypress/issues/5345).
- The [.its()](/api/commands/its) command now properly supports 0 as a value for
  indexes or object keys. Fixes
  [#6216](https://github.com/cypress-io/cypress/issues/6216).

**Documentation Changes:**

- Added [Cross Browser Testing Guide](/app/guides/cross-browser-testing) with
  helpful CI strategies to consider when running tests across multiple browsers.
- Added [Cypress.isBrowser()](/api/cypress-api/isbrowser) doc.

**Misc:**

- We now pass through errors caused when attempting to read arguments passed
  through [config](/api/node-events/configuration-api). Addresses
  [#6279](https://github.com/cypress-io/cypress/issues/6279).
- We fixed a broken 'Learn more' link within the Node.js Version panel of the
  Test Runner Settings. Addresses
  [#6237](https://github.com/cypress-io/cypress/issues/6237).
- The browser icons in the Test Runner now display as images with the proper
  branding. Addresses
  [#6188](https://github.com/cypress-io/cypress/issues/6188).
- We updated the styling of browser dropdown in the Test Runner to look more
  like a button. Addresses
  [#6298](https://github.com/cypress-io/cypress/issues/6298).
- The timer in the Test Runner now always displays at a consistent length.
  Addresses [#6168](https://github.com/cypress-io/cypress/issues/6168).
- You can print debug information about the memory & CPU usage of Cypress, which
  can be accessed by enabling the
  [`cypress:server:util:process_profiler` debug stream](/app/references/troubleshooting#Log-memory-and-CPU-usage).
  Addresses [#6169](https://github.com/cypress-io/cypress/issues/6169).
- We added types for plugin events. Addresses
  [#6322](https://github.com/cypress-io/cypress/issues/6322).

**Dependency Updates**

- Added `@benmalka/foxdriver`. Addressed in
  [#1359](https://github.com/cypress-io/cypress/pull/1359).
- Upgraded `@cypress/browserify-preprocessor` from `1.1.2` to `2.1.1`. Addressed
  in [#4308](https://github.com/cypress-io/cypress/pull/4308) and
  [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `bluebird` from `3.5.0` to `3.7.2`. Addressed in
  [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `cachedir` from `1.3.0` to `2.3.0`. Addressed in
  [#4208](https://github.com/cypress-io/cypress/pull/4208) and
  [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `chai` from `3.5.0` to `4.2.0`. Addressed in
  [#2862](https://github.com/cypress-io/cypress/pull/2862) and
  [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `chai-as-promised` from `6.0.0` to `7.1.1`. Addressed in
  [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `chalk` from `2.4.0` to `3.0.0`. Addressed in
  [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `commander` from `2.15.1` to `4.0.1`. Addressed in
  [#4208](https://github.com/cypress-io/cypress/pull/4208) and
  [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `debug` from `2.15.1` to `4.0.1`. Addressed in
  [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `execa` from `0.10.0` to `3.3.0`. Addressed in
  [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Added `firefox-profiler`. Addressed in
  [#1359](https://github.com/cypress-io/cypress/pull/1359).
- Added `foxdriver`. Addressed in
  [#1359](https://github.com/cypress-io/cypress/pull/1359).
- Upgraded `fs-extra` from `5.0.0` to `8.1.0`. Addressed in
  [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `getos` from `3.1.1` to `3.1.4`. Addressed in
  [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `is-ci` from `1.2.1` to `2.0.0`. Addressed in
  [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `mocha` from `2.5.3` to `7.0.1`. Addressed in
  [#2703](https://github.com/cypress-io/cypress/pull/2703) and
  [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `listr` from `0.12.0` to `0.14.3`. Addressed in
  [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `log-symbols` from `2.2.0` to `3.0.0`. Addressed in
  [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Added `marionette-client`. Addressed in
  [#1359](https://github.com/cypress-io/cypress/pull/1359).
- Upgraded `ramda` from `0.24.1` to `0.26.1`. Addressed in
  [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `sinon` from `3.2.0` to `8.1.1`. Addressed in
  [#2881](https://github.com/cypress-io/cypress/pull/2881) and
  [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `strip-ansi` from `3.0.1` to `6.0.0`. Addressed in
  [#1359](https://github.com/cypress-io/cypress/pull/1359).
- Added `systeminformation`. Addressed in
  [#1359](https://github.com/cypress-io/cypress/pull/1359).
- Upgraded `support-colors` from `5.5.0` to `7.1.0`. Addressed in
  [#4208](https://github.com/cypress-io/cypress/pull/4208) and
  [#4226](https://github.com/cypress-io/cypress/pull/4226).
- Upgraded `untildify` from `3.0.3` to `4.0.0`. Addressed in
  [#4226](https://github.com/cypress-io/cypress/pull/4226).

## 3.8.3

_Released 01/24/2020_

**Bugfixes:**

- We fixed an error during `cypress run` indicating `could not find CRI target`
  when Cypress was unable to find the tab to control. Fixes
  [#6053](https://github.com/cypress-io/cypress/issues/6053).
- HTTP requests to sites using a TLS version lower than 1.2 now no longer fail.
  Fixes [#5446](https://github.com/cypress-io/cypress/issues/5446).
- `cypress verify` will no longer error on some systems when `-screen` is not
  defined. Fixes [#6184](https://github.com/cypress-io/cypress/issues/6184).
- We fixed a regression in [3.5.0](#3-5-0) causing
  [`cy.type({ force: true })`](/api/commands/type) to no longer forcibly type
  characters for readonly inputs. Fixes
  [#6116](https://github.com/cypress-io/cypress/issues/6116).
- Generated reports when using [custom reporters](/app/tooling/reporters) now
  have a defined `file` property. Fixes
  [#1495](https://github.com/cypress-io/cypress/issues/1495).

**Misc:**

- Messages from [cy.get()](/api/commands/get) are now truncated at 50 lines the
  Command Log instead of the 1 line. Addresses
  [#6145](https://github.com/cypress-io/cypress/issues/6145).
- We now collect more environment variables for Bamboo CI when recording for the
  Dashboard. Addresses
  [#4895](https://github.com/cypress-io/cypress/issues/4895).

**Dependency Updates:**

- Upgraded `electron` from `7.1.7` to `7.1.10`. Addressed in
  [#6180](https://github.com/cypress-io/cypress/pull/6180) and
  [#6242](https://github.com/cypress-io/cypress/pull/6242).
- Upgraded `http-status-codes` from `1.3.2` to `1.4.0`. Addressed in
  [#6134](https://github.com/cypress-io/cypress/pull/6134).
- Upgraded `socket.io` and `socket.io-client` from `2.2.0` to `2.3.0`. Addressed
  in [#6179](https://github.com/cypress-io/cypress/pull/6179).

## 3.8.2

_Released 01/10/2020_

**Bugfixes:**

- We fixed a regression in [3.8.0](#3-8-0) on Linux when `unzip` is not
  installed where the progress of `cypress install` would show up to 200%. Fixes
  [#5967](https://github.com/cypress-io/cypress/issues/5967).
- We fixed a regression in [3.7.0](#3-7-0) that would prevent
  [.type()](/api/commands/type) from typing valid characters after invalid
  characters were typed in `type="number"` inputs. Fixes
  [#6055](https://github.com/cypress-io/cypress/issues/6055).
- Child elements of an element that uses both `transform` and `height` or
  `width` are now properly seen as visible during visibility checks. Addresses
  [#5974](https://github.com/cypress-io/cypress/issues/5974).
- We now properly check backface visibility when the parents of a target element
  have the CSS style `transform-style: preserve-3d`. Fixes
  [#5682](https://github.com/cypress-io/cypress/issues/5682).
- DOM elements with a width or height of 0 and `overflow: hidden` are now
  properly calculated as invisible during visibility checks. Fixes
  [#6093](https://github.com/cypress-io/cypress/issues/6093).
- [.should()](/api/commands/should) and [.and()](/api/commands/and) commands
  with function arguments can now be chained with multiple assertions without
  throwing an error. Fixes
  [#4981](https://github.com/cypress-io/cypress/issues/4981).

**Misc:**

- We replaced the browser icons in the Test Runner with more official browser
  brand icons. Addresses
  [#5921](https://github.com/cypress-io/cypress/issues/5921).
- Messages from [cy.log()](/api/commands/log) are now truncated at 50 lines the
  Command Log instead of the 1 line. Addresses
  [#5625](https://github.com/cypress-io/cypress/issues/5625).
- We now capture GitLab CI's `CI_JOB_NAME` environment variable. Addressed in
  [#6111](https://github.com/cypress-io/cypress/pull/6111).
- Types for
  [event emitters](/api/cypress-api/catalog-of-events#Binding-to-Events)
  `removeListener` and `removeAllListeners` have been added to `Cypress` and
  `cy`. Addresses [#5228](https://github.com/cypress-io/cypress/issues/5228).
- Types for the `runUrl` property returned from `cypress.run()` has been added.
  Addresses [#6087](https://github.com/cypress-io/cypress/issues/6087).
- We're continuing to make progress in converting our codebase from CoffeeScript
  to JavaScript. Addresses
  [#2690](https://github.com/cypress-io/cypress/issues/2690) in
  [#5947](https://github.com/cypress-io/cypress/pull/5947) and
  [#6075](https://github.com/cypress-io/cypress/pull/6075).

**Dependency Updates:**

- Upgraded `ansi_up` from `4.0.3` to `4.0.4`. Addressed in
  [#6074](https://github.com/cypress-io/cypress/pull/6074).
- Upgraded `electron` from `7.1.4` to `7.1.7`. Addressed in
  [#6085](https://github.com/cypress-io/cypress/pull/6085).

## 3.8.1

_Released 12/26/2019_

**Bugfixes:**

- We fixed a bug where
  [cypress run --headless](/app/references/command-line#Options)
  would not run Chrome-family browsers headlessly. Fixes
  [#5949](https://github.com/cypress-io/cypress/issues/5949).
- We fixed an issue where, on some systems with IPv4 and IPv6 enabled, Cypress
  would fail to connect to the Chrome DevTools Protocol while launching Chrome,
  leading to test failures. Fixes
  [#5912](https://github.com/cypress-io/cypress/issues/5912).
- The strict cookie validation added in [3.5.0](#3-5-0) for
  [cy.setCookie()](/api/commands/setcookie),
  [cy.clearCookie()](/api/commands/clearcookie), and
  [cy.getCookie()](/api/commands/getcookie) has been removed. Fixes
  [#5642](https://github.com/cypress-io/cypress/issues/5642).
- We fixed a regression in [3.8.0](#3-8-0) where using
  [.type()](/api/commands/type) on number inputs to type non-number characters
  or the `{enter}` special character would not type the correct value. Fixes
  [#5968](https://github.com/cypress-io/cypress/issues/5968) and
  [#5997](https://github.com/cypress-io/cypress/issues/5997).
- Configuration values set from the plugins file now display with the correct
  background color in the Configuration panel in the Test Runner Settings. Fixes
  [#6024](https://github.com/cypress-io/cypress/issues/6024).
- We removed the 'Me' and 'An Organization' selections in the Test Runner when
  setting up a project to more closely match the Dashboard UI. This also fixes
  an edge case where a user with no default organizations could potentially be
  unable to set up a project. Fixes
  [#5954](https://github.com/cypress-io/cypress/issues/5954).

**Misc:**

- We updated the fallback error message for visibility checks to be less
  confusing. Addresses
  [#5982](https://github.com/cypress-io/cypress/issues/5982).
- The type definitions for [cy.location()](/api/commands/location) have been
  improved. Addresses
  [#5574](https://github.com/cypress-io/cypress/issues/5574).

**Dependency Updates:**

- Upgraded `get-port` from `5.0.0` to `5.1.0`. Addressed in
  [#6004](https://github.com/cypress-io/cypress/pull/6004).
- Upgraded `chrome-remote-interface` from `0.28.0` to `0.28.1`. Addressed in
  [#6008](https://github.com/cypress-io/cypress/pull/6008).
- Upgraded `which` from `1.3.1` to `2.0.2`. Addressed in
  [#6017](https://github.com/cypress-io/cypress/pull/6017).
- Upgraded `ansi_up` from `1.3.0` to `4.0.3`. Addressed in
  [#4331](https://github.com/cypress-io/cypress/pull/4331).
- Upgraded `jimp` from `0.6.4` to `0.9.3`. Addressed in
  [#4331](https://github.com/cypress-io/cypress/pull/4331).

## 3.8.0

_Released 12/12/2019_

**Features:**

- Chrome can now be run in headless mode by using
  `cypress run --headless --browser chrome`. Addresses
  [#832](https://github.com/cypress-io/cypress/issues/832).
- Cypress now accepts a
  [--tag](/app/references/command-line#cypress-run-tag-lt-tag-gt) argument to be
  used to identify separate runs. Any tags assigned will be shown on the run in
  the Cypress Dashboard. Addresses
  [#2561](https://github.com/cypress-io/cypress/issues/2561).
- The commands [.its()](/api/commands/its) and [.invoke()](/api/commands/invoke)
  now accept an `options` object to allow changing logging options. Addresses
  [#1450](https://github.com/cypress-io/cypress/issues/1450).
- Cypress will now attempt to use the `unzip` binary during `cypress install`
  before trying the slower, Node.js-based unzipping method. Addresses
  [#3803](https://github.com/cypress-io/cypress/issues/3803).

**Bugfixes:**

- We fixed a regression in [3.5.0](#3-5-0) where Cypress would crash on Windows
  when trying to pass a url through `--config` or `--env` command line flags.
  Fixes [#5466](https://github.com/cypress-io/cypress/issues/5466).
- We fixed a regression in [3.5.0](#3-5-0) where a supplied `Cookie` header
  during [cy.visit()](/api/commands/visit) or
  [cy.request()](/api/commands/request) would be overwritten by the `Cookie`
  header generated from the browser's cookie store. Fixes
  [#5894](https://github.com/cypress-io/cypress/issues/5894).
- We fixed a regression in [3.5.0](#3-5-0) where
  [cy.getCookie()](/api/commands/getcookie) would incorrectly filter cookies by
  their domain, leading to unexpected results. Fixes
  [#5656](https://github.com/cypress-io/cypress/issues/5656).
- We fixed a regression in [3.5.0](#3-5-0) where calling
  `.type({ force: true })` on hidden inputs would not type the correct
  characters. Fixes [#5835](https://github.com/cypress-io/cypress/issues/5835).
- We fixed a regression in [3.5.0](#3-5-0) where [.type()](/api/commands/type)
  was not respecting previous selections if the current value of the input was
  the same as the key. This also fixed an where [.type()](/api/commands/type)
  would not respect previous selections in non-selectionRange inputs (like email
  or number inputs). Fixes
  [#5703](https://github.com/cypress-io/cypress/issues/5703).
- During visibility checks, Cypress now properly evaluates a DOM element
  transformed by `scale(0)` or `rotateY(90deg)` as not visible. Fixes
  [#723](https://github.com/cypress-io/cypress/issues/723).
- Fixed a bug where the specs list during `cypress open` would not refresh when
  files are changed on disk. Fixes
  [#5933](https://github.com/cypress-io/cypress/issues/5933).
- `env` configuration option displays properly within the settings panel.
  Previously, setting env options would incorrectly render `"undefined"` as the
  value. Fixes [#5859](https://github.com/cypress-io/cypress/issues/5859).

**Misc:**

- We removed the max viewport size and lowered min viewport size to `0` for
  [cy.viewport()](/api/commands/viewport) Addresses
  [#5871](https://github.com/cypress-io/cypress/issues/5871) and
  [#5892](https://github.com/cypress-io/cypress/issues/5892).
- The Test Runner now shows a non-Chrome logo for
  [browsers passed in via `config.browser`](/app/references/launching-browsers#Customize-available-browsers)
  that are not of the Chrome family. It also supports showing the Firefox logo
  (in preparation for Firefox browser support). Fixes
  [#5745](https://github.com/cypress-io/cypress/issues/5745).
- We updated the look of some of our icons. Addressed in
  [#5822](https://github.com/cypress-io/cypress/pull/5822).
- We're continuing to make progress in converting our codebase from CoffeeScript
  to JavaScript. Addresses
  [#2690](https://github.com/cypress-io/cypress/issues/2690) in
  [#5643](https://github.com/cypress-io/cypress/pull/5643).
- `cy.request` will now automatically encode special characters in the request
  URL, including Unicode. Addresses
  [#5274](https://github.com/cypress-io/cypress/issues/5274).
- You can pass additional Electron launch command line arguments using
  environment variable `ELECTRON_EXTRA_LAUNCH_ARGS`. Addresses
  [#5807](https://github.com/cypress-io/cypress/issues/5807).

**Dependency Updates:**

- Upgraded `electron` from `5.0.10` to `7.1.4`. This bumps the internal Node
  version to `12.8.1` and the internal Chromium version to `78.0.3904.113`.
  Addressed in [#5849](https://github.com/cypress-io/cypress/pull/5849).
- Upgraded `ansi-escapes` from `4.2.1` to `4.3.0`. Addressed in
  [#5815](https://github.com/cypress-io/cypress/pull/5815).
- Upgraded `electron-context-menu` from `0.11.0` to `0.15.1`. Addressed in
  [#5495](https://github.com/cypress-io/cypress/pull/5495).

## 3.7.0

_Released 11/27/2019_

**Features:**

- Cypress now includes the full list of browsers found and their properties
  within the Cypress configuration. This means that the `browsers` array is also
  [editable within plugins by accessing `config.browsers`](/app/references/launching-browsers#Customize-available-browsers)
  via the [Configuration API](/api/node-events/configuration-api). The currently
  available browsers are also displayed within the
  [configuration panel](/app/references/configuration#Resolved-Configuration)
  under Settings in the Test Runner. Addresses
  [#5067](https://github.com/cypress-io/cypress/issues/5067).
- Environment variables within GitHub Actions are now detected and passed to the
  Dashboard in order to display the proper
  [git information](/app/continuous-integration/overview#Git-information)
  for recorded runs. Addresses
  [#5609](https://github.com/cypress-io/cypress/issues/5609).
- [.its()](/api/commands/its) and [.invoke()](/api/commands/invoke) now support
  a Number for its `propertyName` and `functionName` arguments respectively.
  Addresses [#5754](https://github.com/cypress-io/cypress/issues/5754).

**Bugfixes:**

- We fixed a regression in [3.5.0](#3-5-0) where a
  [cy.visit()](/api/commands/visit) that changes superdomain would incorrectly
  clear cookies of other domains. Fixes
  [#5756](https://github.com/cypress-io/cypress/issues/5756).
- We fixed a regression in [3.5.0](#3-5-0) where cookies set in a redirect on a
  [cy.visit()](/api/commands/visit) or in a `cy.request` with a custom `Domain`
  that is not a subdomain of the current domain would fail to set. Fixes
  [#5656](https://github.com/cypress-io/cypress/issues/5656).
- We fixed a regression in [3.5.0](#3-5-0) which caused
  [.type()](/api/commands/type) to send duplicate modifier keys. Fixes
  [#5622](https://github.com/cypress-io/cypress/issues/5622).
- We fixed a regression in [3.6.1](#3-6-1) where
  [cy.request()](/api/commands/request) with `followRedirect: false` would fail
  if a `Set-Cookie` header was present in the response. Fixes
  [#5654](https://github.com/cypress-io/cypress/issues/5654).
- The context of `window` is no longer `undefined` within the application under
  test when called within a `setTimeout` during strict mode. Fixes
  [#5707](https://github.com/cypress-io/cypress/issues/5707).
- Cypress now captures the SHA of builds generated through Travis CI during pull
  requests. This should resolve issues with Cypress status checks sometimes not
  running within
  [GitHub Integration](/cloud/integrations/source-control/github). Fixes
  [#5728](https://github.com/cypress-io/cypress/issues/5728).
- Cypress now automatically strips double quotes from
  [--ci-build-id](/app/references/command-line#cypress-run-ci-build-id-lt-id-gt)
  and [group](/app/references/command-line#cypress-run-group-lt-name-gt) flag
  arguments during `cypress run`. Fixes
  [#5686](https://github.com/cypress-io/cypress/issues/5686).
- Assertions printed in the
  [Command Log](/app/core-concepts/open-mode#Command-Log) now correctly
  identify integers from string integers. Fixes
  [#25](https://github.com/cypress-io/cypress/issues/25).
- Empty spaces are now accurately reflected in the
  [Command Log](/app/core-concepts/open-mode#Command-Log) within
  assertions. Fixes [#1360](https://github.com/cypress-io/cypress/issues/1360).
- Keys printed in the
  [Command Log](/app/core-concepts/open-mode#Command-Log) when using the
  `have.all.keys` assertion now correctly display. Fixes
  [#753](https://github.com/cypress-io/cypress/issues/753).
- We fixed an issue where Cypress would throw an error when using
  [cy.visit()](/api/commands/visit) on a `cleverapp.io` domain. Fixes
  [#5722](https://github.com/cypress-io/cypress/issues/5722).
- Fixed a bug where fixtures consisting only of `null` would cause an error.
  Fixes [#472](https://github.com/cypress-io/cypress/issues/472).
- Fixed a bug where, if the Test Runner child process is killed with a signal
  and does not exit normally, the npm CLI process would not exit with an error.
  Fixes [#5808](https://github.com/cypress-io/cypress/issues/5808).

**Misc:**

- Added a new, more specific error message when an item is not visible because
  it has `position: fixed` and is being overflowed over. Addresses
  [#1379](https://github.com/cypress-io/cypress/issues/1379).
- `cy.visit`s that cause a superdomain change will now result in 2 requests to
  the origin server. This should not affect tests, as tests will still re-run on
  a superdomain change. This is a side-effect of the fix for
  [#5756](https://github.com/cypress-io/cypress/issues/5756).
- The configuration object returned from the plugins file is now validated and
  will throw a helpful error message when invalid. Addresses
  [#5712](https://github.com/cypress-io/cypress/issues/5712).
- The
  [configuration panel](/app/references/configuration#Resolved-Configuration)
  under Settings in the Test Runner now has a white background for better
  readability. Also each configuration option with nested properties is now
  collapsible. Addressed in
  [#5068](https://github.com/cypress-io/cypress/pull/5068).

**Documentation Changes:**

- Updated the [its()](/api/commands/its) and [invoke()](/api/commands/invoke)
  doc to allow for arguments of type Number for their first argument.
- Documented
  [how to pass in a custom list of browsers](/app/references/launching-browsers#Customize-available-browsers)
  using `config.browsers`.

**Dependency Updates:**

- Upgraded `parse-domain` from `2.0.0` to `2.3.4`. Addressed in
  [#5726](https://github.com/cypress-io/cypress/pull/5726).

## 3.6.1

_Released 11/08/2019_

**Bugfixes:**

- The Electron browser no longer hangs when testing applications that have a
  prompt in a `beforeunload` handler. Fixes
  [#2118](https://github.com/cypress-io/cypress/issues/2118).
- We fixed a regression in [3.5.0](#3-5-0) where HTTP redirects could cause
  strange behavior, including cookies not being set as expected, leading to
  authentication issues and other problems. Fixes
  [#5436](https://github.com/cypress-io/cypress/issues/5436) and
  [#5432](https://github.com/cypress-io/cypress/issues/5432).
- When using [cy.setCookie()](/api/commands/setcookie) with the same `options`
  Object, Cypress now correctly sets the new cookie instead of the one passed
  into a previous [cy.setCookie()](/api/commands/setcookie). Fixes
  [#2701](https://github.com/cypress-io/cypress/issues/2701).
- We fixed a regression in [3.5.0](#3-5-0) where
  [cy.clearCookie()](/api/commands/clearcookie) would not act as expected when
  using certain `baseUrls`. Fixes
  [#5453](https://github.com/cypress-io/cypress/issues/5453).
- Cypress no longer crashes with the error
  `Failed to parse or set cookie named "xxx"` when loading certain websites.
  Fixes [#4990](https://github.com/cypress-io/cypress/issues/4990).
- Cypress now sends the expected headers or request body in a
  [cy.visit()](/api/commands/visit) to an HTTPS URL using the default port, 443.
  Fixes [#5367](https://github.com/cypress-io/cypress/issues/5367).
- We fixed a regression in [3.6.0](#3-6-0) where Cypress would crash with
  `TypeError: Cannot read property 'length' of null` on some network requests.
  Fixes [#5585](https://github.com/cypress-io/cypress/issues/5585).
- We fixed a regression in [3.5.0](#3-5-0) that caused the red target to be
  rendered incorrectly when specifying offset coordinates to
  [.click()](/api/commands/click). Fixes
  [#5635](https://github.com/cypress-io/cypress/issues/5635).
- We fixed a regression in [3.6.0](#3-6-0) that was causing an incorrect element
  to receive the `click` event during action commands. Fixes
  [#5578](https://github.com/cypress-io/cypress/issues/5578).
- We fixed a regression in [3.5.0](#3-5-0) causing text after using modifier
  keys in [.type()](/api/commands/type) to not be typed. Fixes
  [#5622](https://github.com/cypress-io/cypress/issues/5622).
- Elements with `backface-visibility: hidden;` are now accounted for when
  asserting on the elemtent's visibility. Fixes
  [#2985](https://github.com/cypress-io/cypress/issues/2985).
- We fixed a bug where a failed Cypress commands would incorrectly throw
  `cannot read property 'replace' of undefined` if the error's stack was
  `undefined`. Fixes [#1669](https://github.com/cypress-io/cypress/issues/1669).
- The 'Log In' modal within Cypress when setting up a project now correctly
  closes when manually closed. Fixes
  [#5631](https://github.com/cypress-io/cypress/issues/5631).

**Misc:**

- We improved the user experience around inspecting events fired during
  [.click()](/api/commands/click) and [.type()](/api/commands/type) commands
  within the console. Addresses
  [#5553](https://github.com/cypress-io/cypress/issues/5553).
- We increased the timeout when connecting to the "Developer Tools Protocol"
  from 5 seconds to 20 seconds and also added logging for when the connection
  takes longer than 5 seconds. Addresses
  [#5610](https://github.com/cypress-io/cypress/issues/5610).
- There is no longer a warning about `Promise.defer` appearing in stderr when
  running with video recording enabled. Addresses
  [#5611](https://github.com/cypress-io/cypress/issues/5611).
- Types for [.rightclick()](/api/commands/rightclick) and
  [.dblclick()](/api/commands/dblclick) have been updated to correctly reflect
  their accepted options. Addresses
  [#5617](https://github.com/cypress-io/cypress/issues/5617).
- We're continuing to make progress in converting our codebase from CoffeeScript
  to JavaScript. Addresses
  [#2690](https://github.com/cypress-io/cypress/issues/2690) in
  [#5556](https://github.com/cypress-io/cypress/pull/5556)

## 3.6.0

_Released 10/31/2019_

**Features:**

- `testFiles` now also accepts
  an Array of glob patterns when specifying what test files to load in
  configuration. Addresses
  [#5401](https://github.com/cypress-io/cypress/issues/5401).

**Bugfixes:**

- We fixed a regression in [3.5.0](#3-5-0) where the maximum size of an HTTP
  header or body in a stubbed `cy.route()` was limited to 8kb causing requests
  to fail with a 431 HTTP error. Fixes
  [#5431](https://github.com/cypress-io/cypress/issues/5431).
- We fixed a bug where certain types of uncaught errors originating from the
  application under test would not route through the
  [uncaught:exception](/api/cypress-api/catalog-of-events#Uncaught-Exceptions)
  handler, and thus could not caught and ignored. These errors will also now
  correctly indicate that they came from application code. Fixes
  [#987](https://github.com/cypress-io/cypress/issues/987).
- We fixed a regression in [3.5.0](#3-5-0) that would throw an error during
  `cypress verify` when running as a non-root user on a non-Windows machine. We
  now always set the `--no-sandbox` flag when verifying in Electron, even when
  running as a non-root user. Fixes
  [#5434](https://github.com/cypress-io/cypress/issues/5434).
- We fixed a regression in [3.5.0](#3-5-0) where sometimes cookies were not set
  on the correct URL during a redirect inside of a
  [cy.visit()](/api/commands/visit) or [cy.request()](/api/commands/request).
  Fixes [#5432](https://github.com/cypress-io/cypress/issues/5432).
- We fixed a regression in [3.5.0](#3-5-0) causing environment variables
  containing unicode values to be incorrectly resolved when read via
  [Cypress.env()](/api/cypress-api/env). Fixes
  [#5435](https://github.com/cypress-io/cypress/issues/5435).
- We fixed a regression in [3.5.0](#3-5-0) that prevented use of `.click()` or
  `.type()` inside of an iframe element. Fixes
  [#5449](https://github.com/cypress-io/cypress/issues/5449). Fixes
  [#5435](https://github.com/cypress-io/cypress/issues/5435).
- We now throw the proper error message when an element cannot be interacted
  with due to being covered by an element with `position:fixed`. Fixes
  [#5430](https://github.com/cypress-io/cypress/issues/5430).
- We fixed a regression in [3.5.0](#3-5-0) that caused some `click` events to
  not be sent to the correct elements during `.click()`. Fixes
  [#5459](https://github.com/cypress-io/cypress/issues/5459).
- We updated `.type()` to properly respect focus selection changes during
  typing. Fixes [#5456](https://github.com/cypress-io/cypress/issues/5456).
- We fixed a regression in [3.5.0](#3-5-0) that caused selected text to be
  overwritten while typing a modifier key during `.type()`. Fixes
  [#5439](https://github.com/cypress-io/cypress/issues/5439).
- We now send all the proper events during `.type()` to input elements with type
  `date`, `time`, and `datetime-local` so that it now behaves as it did prior to
  [3.5.0](#3-5-0). Fixes
  [#5476](https://github.com/cypress-io/cypress/issues/5476).
- We now properly render iframe placeholder content when previewing DOM
  snapshots. Fixes [#5295](https://github.com/cypress-io/cypress/issues/5295).

**Misc:**

- We no longer log the default option `{multiple: true}` in the Command Log or
  the console during [cy.dblclick()](/api/commands/dblclick). Addresses
  [#5406](https://github.com/cypress-io/cypress/issues/5406).
- The text color of inactive tabs within the Cypress Chrome browser has been set
  to white for better readability. Addresses
  [#1661](https://github.com/cypress-io/cypress/issues/1661).

**Dependency Updates**

- Replaced `express-handlebars` with `squirrelly` to reduce dependency size.
  Addressed in [#5521](https://github.com/cypress-io/cypress/pull/5521).
- Upgraded `graceful-fs` from `4.2.0` to `4.2.3`. Addressed in
  [#5497](https://github.com/cypress-io/cypress/pull/5497).

## 3.5.0

_Released 10/23/2019_

**Features:**

- We now record video by default when you run Cypress in Chrome, Chromium, or
  Canary such as during
  [cypress run --browser chrome](/app/references/command-line#cypress-run-browser-lt-browser-name-or-path-gt).
  Addresses [#4608](https://github.com/cypress-io/cypress/issues/4608).
- There is a new [.rightclick()](/api/commands/rightclick) command to right
  click on DOM elements. Addresses
  [#53](https://github.com/cypress-io/cypress/issues/53).
- Cypress now accepts a
  [`--config-file` argument](/app/references/command-line#cypress-run-config-file-lt-configuration-file-gt)
  to specify a different file to be used for Cypress configuration. You can also
  pass `false` to the `--config-file` to not use any configuration file.
  Addresses [#1369](https://github.com/cypress-io/cypress/issues/1369).
- You can now use your system's Node version by setting the
  `nodeVersion` to `system` in
  your configuration. This Node version will be used to build files in your
  `integrationFolder` and
  `supportFile` and also be used
  to execute code in your
  `pluginsFile`. If not set,
  Cypress will continue to use the Node version bundled with Cypress. Addresses
  [#4432](https://github.com/cypress-io/cypress/issues/4432).
- [.dblclick()](/api/commands/dblclick) now accepts `position`, `x`, and `y`
  arguments. Addresses [#116](https://github.com/cypress-io/cypress/issues/116).
- [.dblclick()](/api/commands/dblclick) now accepts `force` and `multiple` in
  its `options`. Addresses
  [#116](https://github.com/cypress-io/cypress/issues/116).
- [.screenshot()](/api/commands/screenshot) now accepts a `padding` argument
  when screenshotting elements that will alter the dimensions of the screenshot
  of the element. Addresses
  [#4440](https://github.com/cypress-io/cypress/issues/4440).
- [cy.visit()](/api/commands/visit) now accepts a `qs` option representing an
  object of query parameters to be used in the URL. Addresses
  [#5034](https://github.com/cypress-io/cypress/issues/5034).
- [cy.viewport()](/api/commands/viewport) now allows for viewport sizes up to
  4,000 pixels. Addresses
  [#5181](https://github.com/cypress-io/cypress/issues/5181).
- [cy.viewport()](/api/commands/viewport) accepts new size presets for
  `iphone-xr`, `iphone-x`, `samsung-s10` and `samsung-note9`. Addresses
  [#4967](https://github.com/cypress-io/cypress/issues/4967).
- Passing a `~` to `CYPRESS_CACHE_FOLDER` will automatically resolve to the
  user's home directory. Addresses
  [#5386](https://github.com/cypress-io/cypress/issues/5386).

**Bugfixes:**

- [.dblclick()](/api/commands/dblclick) and [.click()](/api/commands/click) now
  fire all appropriate mouse events including `mouseover`, `mousemove`,
  `mouseout`, `pointerdown`, `pointerup`, and `pointermove`. Fixes
  [#1016](https://github.com/cypress-io/cypress/issues/1016),
  [#1847](https://github.com/cypress-io/cypress/issues/1847),
  [#2045](https://github.com/cypress-io/cypress/issues/2045),
  [#2521](https://github.com/cypress-io/cypress/issues/2521),
  [#2768](https://github.com/cypress-io/cypress/issues/2768),
  [#2928](https://github.com/cypress-io/cypress/issues/2928),
  [#2957](https://github.com/cypress-io/cypress/issues/2957), and
  [#3224](https://github.com/cypress-io/cypress/issues/3224).
- We updated [.dblclick()](/api/commands/dblclick) to follow the same
  actionability checks as [.click()](/api/commands/click). Fixes
  [#3798](https://github.com/cypress-io/cypress/issues/3798).
- Coordinates clicked during [.click()](/api/commands/click) are now correct if
  the element being clicked is within an iframe. Fixes
  [#4347](https://github.com/cypress-io/cypress/issues/4347).
- We now allow [.type()](/api/commands/type) to be used on any DOM element. The
  element will receive all of the type events. Fixes
  [#2166](https://github.com/cypress-io/cypress/issues/2166) and
  [#3661](https://github.com/cypress-io/cypress/issues/3661).
- If a typeable element gains focus during [.type()](/api/commands/type),
  Cypress now continues typing into the newly focused element. Fixes
  [#2240](https://github.com/cypress-io/cypress/issues/2240).
- We now correctly borrow the property getter for `maxLength` when using
  [`.type()`](/api/commands/type) on an input. Fixes
  [#4587](https://github.com/cypress-io/cypress/issues/4587).
- We fixed an issue where `datetime-local` inputs would not have their `value`
  updated during [.type()](/api/commands/type). Fixes
  [#2613](https://github.com/cypress-io/cypress/issues/2613).
- [.type()](/api/commands/type) now allows you to type `-` into number inputs
  with text selection. Fixes
  [#4767](https://github.com/cypress-io/cypress/issues/4767).
- We now fire an `input` event when using [.type()](/api/commands/type) typing
  `{enter}` inserts a newline. Fixes
  [#4870](https://github.com/cypress-io/cypress/issues/4870).
- We no longer input text when non-`{shift}` modifier keys are typed in
  [.type()](/api/commands/type). Fixes
  [#5424](https://github.com/cypress-io/cypress/issues/5424).
- We now properly send the `code` property during keyboard events triggered
  during [.type()](/api/commands/type). Fixes
  [#3722](https://github.com/cypress-io/cypress/issues/3722)
- Cypress now sends `screenX` and `screenY` properties to events triggered using
  [.trigger()](/api/commands/trigger). Fixes
  [#3187](https://github.com/cypress-io/cypress/issues/3187).
- We fixed a bug where Cypress could not intercept traffic sent through
  [cy.visit()](/api/commands/visit) to IP addresses over HTTPS, leading to
  `ERR_SSL_VERSION_OR_CIPHER_MISMATCH` errors. Fixes
  [#771](https://github.com/cypress-io/cypress/issues/771).
- We fixed a bug introduced in [3.3.0](#3-3-0) where
  some HTTPS sites failed to load during [cy.visit()](/api/commands/visit) and
  [cy.request()](/api/commands/request) with a "handshake failed" error. Fixes
  [#4394](https://github.com/cypress-io/cypress/issues/4394).
- We fixed a bug where ECC SSL Certificates were not supported during
  [cy.visit()](/api/commands/visit) that was introduced in
  [3.3.0](#3-3-0). Fixes
  [#4368](https://github.com/cypress-io/cypress/issues/4368).
- We fixed an issue introduced in [3.4.0](#3-4-0)
  that would cause the Selector Playground to not properly highlight the
  currently hovered element. Fixes
  [#4872](https://github.com/cypress-io/cypress/issues/4872).
- [Cypress.env()](/api/cypress-api/env) now escapes `<script>` tags in the
  configuration file. Fixes
  [#4952](https://github.com/cypress-io/cypress/issues/4952).
- Cypress now properly handles converting responses of `content-type`
  `application/vnd.api+json` to JSON. Fixes
  [#5165](https://github.com/cypress-io/cypress/issues/5165).
- XHR responses in `cy.route()` that exceed 80kb in size no longer fail with an
  `ERR_EMPTY_RESPONSE` error. Fixes
  [#76](https://github.com/cypress-io/cypress/issues/76).
- Cypress no longer crashes with `dest.end` errors on Windows machines. Fixes
  [#2181](https://github.com/cypress-io/cypress/issues/2181).
- The `onFocus` event no longer incorrectly fires on hidden elements. This fixes
  an issue introduced in [3.3.2](#3-3-2). Fixes
  [#4898](https://github.com/cypress-io/cypress/issues/4898).
- You can now call [.click()](/api/commands/click) on inputs or textareas that
  are `readonly`. This fixes an issue introduced in
  [3.4.1](#3-4-1). Fixes
  [#4874](https://github.com/cypress-io/cypress/issues/4874).
- Cypress no longer crashes with a `"port" option should be a number or string`
  error when receiving an erroneous HTTP CONNECT. Fixes
  [#3250](https://github.com/cypress-io/cypress/issues/3250).
- Cypress tests now timeout if there are no Cypress commands enqueue and the
  `done()` callback is not called within the `commandTimeout`. Fixes
  [#1075](https://github.com/cypress-io/cypress/issues/1075),
  [#2478](https://github.com/cypress-io/cypress/issues/2478),
  [#3349](https://github.com/cypress-io/cypress/issues/3349), and
  [#4790](https://github.com/cypress-io/cypress/issues/4790).
- We fixed a bug where Cypress would exit with an `ENOTCONN` error at the end of
  a test run when using Node `>12.11.0` on Windows OS. Fixes
  [#5241](https://github.com/cypress-io/cypress/issues/5241).
- We fixed a bug where the Chrome policy warnings introduced in
  [3.4.0](#3-4-0) would not appear. Fixes
  [#4986](https://github.com/cypress-io/cypress/issues/4986).
- We improved the way that cookies are handled for Chrome browsers. This fixes
  an issue when parsing cookies that were set with a domain beginning with a `.`
  in Chrome 77. Fixes [#5142](https://github.com/cypress-io/cypress/issues/5142)
  and [#5206](https://github.com/cypress-io/cypress/issues/5206).
- We fixed a bug when visiting an application that does an HTTP request to a
  `.js` file containing Unicode transferred using `Content-Encoding: gzip` that
  could cause the JavaScript file to become corrupted. Fixes
  [#1746](https://github.com/cypress-io/cypress/issues/1746).
- We now normalize the Cypress cache folder to resolve in the current folder and
  not with respect to the `node_modules/cypress` folder. Fixes
  [#2364](https://github.com/cypress-io/cypress/issues/2364).

**Misc:**

- Cypress now displays a more precise error message when checking an element's
  visibility if an element is detached from the DOM. Addresses
  [#4946](https://github.com/cypress-io/cypress/issues/4946).
- We increased the timeout to wait for Xvfb to start from 5 seconds to 30
  seconds. This should resolve some issues where the error
  `Could not start Xvfb` was being thrown because Xvfb could not start within
  the allowed time. Addresses
  [#5110](https://github.com/cypress-io/cypress/issues/5110).
- We now warn when using `cypress run` from the binary directly (not from an npm
  module) since this is not its intended use. Addresses
  [#1573](https://github.com/cypress-io/cypress/issues/1573).
- We now warn on [`cy.visit('file://...)`](/api/commands/visit) to explain that
  this url format is not supported and suggest visiting a relative HTML file.
  Addresses [#4452](https://github.com/cypress-io/cypress/issues/4452).
- Setting the reserved `CYPRESS_ENV` environment variable will now throw an
  error. Addresses [#1621](https://github.com/cypress-io/cypress/issues/1621).
- We now throw a better error when passing in an Object to the
  [browser](/api/node-events/browser-launch-api) argument of the Browser Launch API
  explaining that a String is expected instead. Addresses
  [#4966](https://github.com/cypress-io/cypress/issues/4966).
- An error will now be thrown if an invalid `name` or `value` is supplied to
  [cy.setCookie()](/api/commands/setcookie), matching the RFC 6265 compliant
  validation of cookie names and values. Addresses
  [#5206](https://github.com/cypress-io/cypress/issues/5206).
- Passing an invalid type to the 2nd argument of [cy.get()](/api/commands/get)
  now throws an error explaining that an `options` Object is expected. Addresses
  [#2953](https://github.com/cypress-io/cypress/issues/2953).
- We now throw a more helpful error message during
  [cy.screenshot()](/api/commands/screenshot) that would result in a screenshot
  with 0 width or height. Addresses
  [#5149](https://github.com/cypress-io/cypress/issues/5149).
- Stdout printed during `cypress run` no longer truncates text such a filenames
  and instead wraps the text to fit within the width of the terminal. Addresses
  [#4977](https://github.com/cypress-io/cypress/issues/4977).
- We now display up to 2,000 characters of HTTP property values within error
  messages during [cy.request()](/api/commands/request) errors. Addresses
  [#3145](https://github.com/cypress-io/cypress/issues/3145).
- Cypress now always considers `localhost` to be in `NO_PROXY`. To make Cypress
  send traffic for `localhost` through the proxy, you will now have to pass
  `<-loopback>` in `NO_PROXY`. Addresses
  [#4780](https://github.com/cypress-io/cypress/issues/4780).
- We changed the way cookies are set in [cy.visit()](/api/commands/visit) to
  more closely match the browser's behavior when setting cookies, particularly
  when using `fetch` with cookies. Addresses
  [#4433](https://github.com/cypress-io/cypress/issues/4433).
- We've added more flags to send to Chrome upon launch that should help with
  issues encountered during browser automation including
  `--disable-backgrounding-occluded-window`, `--disable-breakpad`,
  `--disable-ipc-flooding-protection`, `--password-store=basic`, and
  `--use-mock-keychain`. Addresses
  [#5132](https://github.com/cypress-io/cypress/issues/5132) and
  [#3633](https://github.com/cypress-io/cypress/issues/3633).
- Scrolling the specs list now only scrolls the list of spec files and no longer
  scrolls the search and filter bar. Addresses
  [#4904](https://github.com/cypress-io/cypress/issues/4904).
- We fixed some layout issues within the Test Runner that were introduced in
  [3.4.1](#3-4-1). Addresses
  [#4888](https://github.com/cypress-io/cypress/issues/4888),
  [#4912](https://github.com/cypress-io/cypress/issues/4912), and
  [#4959](https://github.com/cypress-io/cypress/issues/4959).
- The counter badge for spies and stubs no longer appears visually cut off.
  Fixes [#4822](https://github.com/cypress-io/cypress/issues/4822).
- TypeScript `3.6.2` no longer errors due to outdated jQuery types. Addresses
  [#5065](https://github.com/cypress-io/cypress/issues/5065).
- We updated types for
  [Cypress.Commands.overwrite()](/api/cypress-api/custom-commands) to not allow
  an `options` object as an argument. Addresses
  [#5341](https://github.com/cypress-io/cypress/issues/5341).
- We added `failures` and `message` types when a run fails using the
  [Module API](/app/references/module-api). Addresses
  [#5335](https://github.com/cypress-io/cypress/issues/5335).
- We're continuing to make progress in converting our codebase from CoffeeScript
  to JavaScript. Addresses
  [#2690](https://github.com/cypress-io/cypress/issues/2690) in
  [#4869](https://github.com/cypress-io/cypress/pull/4869),
  [#4906](https://github.com/cypress-io/cypress/pull/4906),
  [#5096](https://github.com/cypress-io/cypress/pull/5096),
  [#5107](https://github.com/cypress-io/cypress/pull/5107),
  [#5156](https://github.com/cypress-io/cypress/pull/5156),
  [#5173](https://github.com/cypress-io/cypress/pull/5173), and
  [#5352](https://github.com/cypress-io/cypress/pull/5352).

**Documentation Changes:**

- Added a [.rightclick()](/api/commands/rightclick) doc.
- Added a Webinars doc containing videos of
  all of the official Cypress webcasts.
- Updated the [.dblclick()](/api/commands/dblclick) doc to include new
  `position`, `x`, and `y` arguments plus `force` and `multiple` options.
- Added the `--config-file` argument to
  [Command Line](/app/references/command-line) and
  [Module API](/app/references/module-api) doc.
- Added the `nodeVersion` argument to
  [Configuration](/app/references/configuration) doc and mentioned its uses
  in the [How to use Plugins](/app/plugins/plugins-guide) and
  [Node Events Overview](/api/node-events/overview) doc.
- Updated all docs to mention 'configuration file' instead of static
  `cypress.json` file since this is not configurable via a `--config-file`
  argument.
- Added `qs` option to [cy.visit()](/api/commands/visit#Arguments) with
  examples.
- Added `padding` option to [cy.screenshot()](/api/commands/screenshot) with
  examples.
- Updated the [cy.viewport()](/api/commands/viewport) doc to have a max viewport
  size of `4000`.
- Added newly supported viewport sizes to the
  [cy.viewport()](/api/commands/viewport) doc.
- Documented new keyboard shortcuts in the
  [Cypress App](/app/core-concepts/open-mode) doc.
- Added a new section on troubleshooting problems with Xvfb to the
  [Continuous Integration](/app/continuous-integration/overview#Xvfb)
  doc.
- Added a section to our Debugging doc about our `cypress-fiddle` plugin used
  for playing around with small test cases.
- Added a section to our [Debugging](/app/references/troubleshooting#Patch-Cypress) doc
  explaining how to patch an installed version of Cypress.
- Mention not needing to decode portions of the `url` in the `cy.route()` doc.
- Mention that the `file://` prefix is not supported in the
  [cy.visit()](/api/commands/visit) doc.
- Add a note about when passing `<-loopback>` in `NO_PROXY` is necessary in the
  Proxy Configuration doc.
- Updated our Dashboard docs to include screenshots containing our new Dashboard
  navigation design.
- We have some newly translated documentation in Portuguese. If you'd like to
  help in translating more, please open a pull request in our
  [documentation repo](https://github.com/cypress-io/cypress-documentation).

**Dependency Updates**

- Upgraded Chrome browser version used during `cypress run` and when selecting
  Electron browser in `cypress open` from `61` to `73`. Addressed in
  [#4720](https://github.com/cypress-io/cypress/pull/4720).
- Upgraded `electron` from `2.0.18` to `5.0.10`. Addressed in
  [#4720](https://github.com/cypress-io/cypress/pull/4720).
- Upgraded `node` from `8.9.3` to `12.0.0`. Addressed in
  [#4720](https://github.com/cypress-io/cypress/pull/4720).
- Upgraded `jquery` from `2.2.4` to `3.1.1`. Addressed in
  [#1229](https://github.com/cypress-io/cypress/pull/1229).
- Upgraded `sanitize-filename` from `1.6.1` to `1.6.3`. Addressed in
  [#5216](https://github.com/cypress-io/cypress/pull/5216).
- Upgraded `@cypress/get-windows-proxy` from `1.5.4` to `1.6.0`. Addressed in
  [#5108](https://github.com/cypress-io/cypress/pull/5108).

## 3.4.1

_Released 07/29/2019_

**Dashboard Features:**

- We’re excited to announce
  [GitHub integration](/cloud/integrations/source-control/github) for the
  [Cypress Dashboard](https://on.cypress.io/dashboard). You can now get timely
  and useful test run information within pull-requests via status checks and
  pull-request comments. Learn all about it on
  [our blog](https://www.cypress.io/blog/2019/07/29/github-integration-for-the-cypress-dashboard/).
  Addresses [#981](https://github.com/cypress-io/cypress/issues/981).

**Bugfixes:**

- Fixed a bug where the content of pages using non-UTF-8 character encoding
  would become corrupted when opened in Cypress. Fixes
  [#3479](https://github.com/cypress-io/cypress/issues/3479),
  [#1543](https://github.com/cypress-io/cypress/issues/1543), and
  [#3650](https://github.com/cypress-io/cypress/issues/3650).
- Fixed a regression introduced in [3.4.0](#3-4-0)
  that caused an error to be thrown when chaining together multiple assertions
  using the `and` chainable getter. Fixes
  [#4833](https://github.com/cypress-io/cypress/issues/4833).
- The `include` and `includes` assertion chainers now correctly work the same as
  `contain` and `contains` assertion chainers. Fixes
  [#4833](https://github.com/cypress-io/cypress/issues/4833).
- Cypress now correctly works offline on Windows when visiting a localhost URL.
  Fixes [#4763](https://github.com/cypress-io/cypress/issues/4763).
- [cy.type()](/api/commands/type) now factors in the `readonly` property of
  `<input />` elements, and will wait for this property to be `false` before
  attempting to type. Fixes
  [#1246](https://github.com/cypress-io/cypress/issues/1246).
- Variables beginning with `top` and `location` in your application code are no
  longer modified when `modifyObstructiveCode` is `true`. Fixes
  [#4794](https://github.com/cypress-io/cypress/issues/4794).
- We removed erroneous socket connections when the browser is initially
  launching. Fixes [#4776](https://github.com/cypress-io/cypress/issues/4776).
- Fixed a bug when dismissing pinned snapshots that would cause the page to be
  wiped with nothing rendered. Fixes
  [#4864](https://github.com/cypress-io/cypress/issues/4864).
- We upgraded the `mocha-teamcity-reporter` dependency so that it no longer
  errors in certain situations when trying to access duration on tests. Fixes
  [#4654](https://github.com/cypress-io/cypress/issues/4654).
- We upgraded the `lodash` dependency to fix a security vulnerability warning.
  Fixes [#4699](https://github.com/cypress-io/cypress/issues/4699),
  [#4730](https://github.com/cypress-io/cypress/issues/4730),
  [#4743](https://github.com/cypress-io/cypress/issues/4743).

**Misc:**

- We now ensure we are shipping with production versions of dependencies such as
  `react`, `mobx`, etc. This should help to prevent conflicts with Developer
  Tools extensions and increase performance by reducing memory, heap allocation,
  and overall JS bundle size. Addresses
  [#4844](https://github.com/cypress-io/cypress/issues/4844).
- Video recordings now wait after all tests finish to ensure that the video
  captures the final rendered frames of the browser. This prevents the last few
  paints from being cut off. Fixes
  [#2370](https://github.com/cypress-io/cypress/issues/2370).
- Cypress now looks for any npm proxy configuration values as a fallback when no
  other system proxy configuration is found. This brings this feature into
  parity with how npm reads off proxy configuration values during an
  `npm install`. Addresses
  [#4719](https://github.com/cypress-io/cypress/issues/4719).
- We updated the messaging when there is a failure downloading Cypress to
  recommend checking your proxy settings. Addresses
  [#1662](https://github.com/cypress-io/cypress/issues/1662).
- A warning message now displays if you attempt to run the Cypress binary
  directly instead of going through the cypress `npm` package. Addresses
  [#1573](https://github.com/cypress-io/cypress/issues/1573).
- There are newly added examples in the TypeScript definitions for
  [custom commands](/api/cypress-api/custom-commands),
  [cy.location()](/api/commands/location) and [.should()](/api/commands/should).
  Addresses [#3684](https://github.com/cypress-io/cypress/issues/3684) and
  [#4715](https://github.com/cypress-io/cypress/issues/4715).
- The types for the [`cy.contains(content, options)`](/api/commands/contains)
  syntax have been added. Addresses
  [#4727](https://github.com/cypress-io/cypress/issues/4727).
- Types for `cy.once()` have been added. Addressed in
  [#4788](https://github.com/cypress-io/cypress/pull/4788).
- There is now a `{ parseSpecialCharSequences: false }` option to
  [cy.type()](/api/commands/type) that disables parsing the special character
  sequences found between the `{}` characters. This will now type what you've
  provided literally without any special parsing. Fixes
  [#4287](https://github.com/cypress-io/cypress/issues/4287).
- You can now zoom in the main Test Runner window and also the Electron browser.
  Corresponding keyboard shortcuts for Zoom in, Zoom out and Actual Size are
  also available. Addresses
  [#1231](https://github.com/cypress-io/cypress/issues/1231).
- When viewing the Test Runner's main window at its smallest size, the header
  text no longer incorrectly wraps. Addresses
  [#86](https://github.com/cypress-io/cypress/issues/86).
- We're continuing to make process in converting our codebase from CoffeeScript
  to JavaScript. Addresses
  [#2690](https://github.com/cypress-io/cypress/issues/2690) in
  [#4781](https://github.com/cypress-io/cypress/pull/4781) and
  [#4817](https://github.com/cypress-io/cypress/pull/4817).
- We increased the cypress binary verification phase from 10 seconds to 30
  seconds to accommodate underpowered or overwhelmed machines typically found in
  CI environments. Addresses
  [#4624](https://github.com/cypress-io/cypress/issues/4624).

**Documentation Changes:**

- We have new instructions on how to set up
  [GitHub Integration](/cloud/integrations/source-control/github) with
  the Cypress Dashboard.
- Updated instructions for adding types for custom commands in the
  [TypeScript Support](/app/tooling/typescript-support#Types-for-Custom-Commands)
  doc. Addressed in
  [#1901](https://github.com/cypress-io/cypress-documentation/pull/1901)
- Added a section about video encoding and how to speed up the encoding time to
  [Screenshots and Videos](/app/guides/screenshots-and-videos#Video-encoding)
  doc. Addressed in
  [#1880](https://github.com/cypress-io/cypress-documentation/pull/1880)

**Dependency Updates**

- Upgraded `@ffmpeg-installer/ffmpeg` from `1.0.17` to `1.0.19`. Addressed in
  [#4792](https://github.com/cypress-io/cypress/pull/4792).
- Upgraded `browserify` from `13.3.0` to `16.3.0`. Addressed in
  [#4751](https://github.com/cypress-io/cypress/pull/4751),
  [#4825](https://github.com/cypress-io/cypress/pull/4825) and
  [#4826](https://github.com/cypress-io/cypress/pull/4826).
- Upgraded `data-uri-to-buffer` from `1.2.0` to `2.0.1`. Addressed in
  [#4622](https://github.com/cypress-io/cypress/pull/4622).
- Upgraded `duplexify` from `4.0.0` to `4.1.1`. Addressed in
  [#4853](https://github.com/cypress-io/cypress/pull/4853).
- Upgraded `graceful-fs` from `4.1.15` to `4.2.0`. Addressed in
  [#4818](https://github.com/cypress-io/cypress/pull/4818).
- Upgraded `lodash` from `4.17.11` to `4.17.15`. Addressed in
  [#4684](https://github.com/cypress-io/cypress/pull/4684),
  [#4709](https://github.com/cypress-io/cypress/pull/4709),
  [#4784](https://github.com/cypress-io/cypress/pull/4784).
- Upgraded `mocha-junit-reporter` from `1.23.0` to `1.23.1`. Addressed in
  [#4785](https://github.com/cypress-io/cypress/pull/4785).
- Upgraded `p-queue` from `1.2.0` to `6.1.0`. Addressed in
  [#4750](https://github.com/cypress-io/cypress/pull/4750).
- Upgraded `semver` from `6.0.0` to `6.3.0`. Addressed in
  [#4797](https://github.com/cypress-io/cypress/pull/4797).
- We also updated and removed some dependencies used for development.

## 3.4.0

_Released 07/09/2019_

**Features:**

- Users can now log in to the Test Runner through the browser installed on their
  system. This also allows for login via GitHub with U2F keys. Addresses
  [#3583](https://github.com/cypress-io/cypress/issues/3583),
  [#4337](https://github.com/cypress-io/cypress/issues/4337), and
  [#1162](https://github.com/cypress-io/cypress/issues/1162).
- Google or SSO (if configured) login is now supported in the Test Runner.
  Addresses [#3519](https://github.com/cypress-io/cypress/issues/3519).

**Bugfixes:**

- Cypress now properly supports partial matching of string values for assertions
  `contain.text`, `contain.html`, and `contain.value`. Fixes
  [#1969](https://github.com/cypress-io/cypress/issues/1969).
- A form is now properly submitted when using `.type('{enter}')` on a form
  containing no buttons and only one input that allows implicit submission.
  Fixes [#4495](https://github.com/cypress-io/cypress/issues/4495).
- Extra whitespace and quotations are now stripped from the
  `CYPRESS_INSTALL_BINARY` environment variable to help prevent some unexpected
  results when set in Windows. Fixes
  [#4506](https://github.com/cypress-io/cypress/issues/4506).
- Electron rendering warnings are no longer printed to console output. Fixes
  [#4288](https://github.com/cypress-io/cypress/issues/4288).

**Misc:**

- We now expose a downloadable binary for each commit made into the
  [develop branch](https://github.com/cypress-io/cypress/commits/develop) of the
  [cypress](https://github.com/cypress-io/cypress) repository so that
  pre-released versions can be installed. See
  [this commit](https://github.com/cypress-io/cypress/commit/52ca8ed8399c5ef467efbee7a2d00fe0863e7f36#commitcomment-34237047)
  for an example. Addresses
  [#4525](https://github.com/cypress-io/cypress/issues/4525).
- There are now a series of checks that are run during download of Cypress to
  verify that the zip file downloaded is the correct file. Addresses
  [#812](https://github.com/cypress-io/cypress/issues/812) and
  [#3515](https://github.com/cypress-io/cypress/issues/3515).
- A warning now displays for Windows' users who have Group Policy settings that
  may interfere with usage of Cypress. Addresses
  [#4391](https://github.com/cypress-io/cypress/issues/4391).
- There's a new warning when mouse interactions fail displaying that it failed
  due to the element having CSS `pointer-events: none`. Addresses
  [#3164](https://github.com/cypress-io/cypress/issues/3164).
- If a URL is passed to `cy.route()` containing percent-encoded characters, we
  now display a warning explaining that `cy.route()` expects a decoded URL.
  Addresses [#2372](https://github.com/cypress-io/cypress/issues/2372).
- Environment variables for Semaphore 2.0 are now captured when recording tests
  to the Dashboard. Fixes
  [#4671](https://github.com/cypress-io/cypress/issues/4671).
- We now capture environment variables set from Concourse CI when recording
  tests to the Dashboard. Fixes
  [#4376](https://github.com/cypress-io/cypress/issues/4376).
- We replaced capturing environment variables from SnapCI (which is no longer
  available) to instead capture ones set from GoCD when recording tests to the
  Dashboard. Fixes [#2680](https://github.com/cypress-io/cypress/issues/2680).
- The [JSON schema file](https://on.cypress.io/cypress.schema.json) used for
  [intelligent code completion](/app/tooling/IDE-integration#Intelligent-Code-Completion)
  for the Cypress configuration file has been updated to match our
  documentation.

**Documentation Changes:**

- New error message added about policy settings to our
  [Error Messages](/app/references/error-messages) doc. Addressed in
  [#1567](https://github.com/cypress-io/cypress-documentation/pull/1754).
- [Real World](https://github.com/cypress-io/cypress-realworld-app) example tests were added to
  Example Applications doc. Addressed in
  [#1567](https://github.com/cypress-io/cypress-documentation/pull/1836).
- More content was added to our [Code Coverage](/app/tooling/code-coverage)
  doc.

**Dependency Updates**

- Removed `string-to-stream` since it was no longer being used. Addressed in
  [#4619](https://github.com/cypress-io/cypress/pull/4619).
- Upgraded `@cypress/commit-info` from `2.1.3` to `2.1.4`. Addressed in
  [#4597](https://github.com/cypress-io/cypress/pull/4597).
- Upgraded `@cypress/react-tooltip` from `0.4.0` to `0.5.0`. Addressed in
  [#4610](https://github.com/cypress-io/cypress/pull/4610).
- Upgraded `errorhandler` from `1.5.0` to `1.5.1`. Addressed in
  [#4618](https://github.com/cypress-io/cypress/pull/4618).
- Upgraded `fs-extra` from `8.0.1` to `8.1.0`. Addressed in
  [#4620](https://github.com/cypress-io/cypress/pull/4620).
- Upgraded `request-progress` from `0.4.0` to `3.0.0`. Addressed in
  [#4584](https://github.com/cypress-io/cypress/pull/4584).
- We also updated and removed some dependencies used for development.

## 3.3.2

_Released 06/27/2019_

**Performance Improvements:**

- We fixed a regression introduced in
  [3.3.0](#3-3-0) that was causing the Test Runner
  to do extremely unnecessary re-renders of the Command Log on any command
  change - leading to exponential performance degradation on any run. This was
  the root cause behind many users experiencing a reduction in performance when
  upgrading to `3.3.0` or above. Fixes
  [#4411](https://github.com/cypress-io/cypress/issues/4411) and
  [#4313](https://github.com/cypress-io/cypress/issues/4313).
- We reduced memory consumption and improved the performance of running tests
  anytime you're inside of `cypress open`. Fixes
  [#2366](https://github.com/cypress-io/cypress/issues/2366).
- We no longer delay proxied responses with no body with status codes 1xx,
  204, 304. This fixes a regression introduced in
  [3.2.0](#3-2-0) where responses with these status
  codes were delayed when using a proxy. Fixes
  [#4298](https://github.com/cypress-io/cypress/issues/4298).
- Snapshots were previously being mistakenly stored then instantly deleted when
  `numTestsKeptInMemory` was set to 0. We now no longer record the snapshots at
  all when `numTestsKeptInMemory` is set to 0. This should slightly improve the
  performance of running tests with this setting. Fixes
  [#4104](https://github.com/cypress-io/cypress/issues/4104) and
  [#4164](https://github.com/cypress-io/cypress/issues/4164).

**Bugfixes:**

- Cypress no longer watches files when run using `cypress run`. This will fix
  some runs that were crashing with an `ENOSPC` error. Fixes
  [#4283](https://github.com/cypress-io/cypress/issues/4283).
- Cypress now correctly handles `blur` and `focus` events in situations where
  the browser has lost focus. Fixes
  [#4039](https://github.com/cypress-io/cypress/issues/4039),
  [#1176](https://github.com/cypress-io/cypress/issues/1176), and
  [#1486](https://github.com/cypress-io/cypress/issues/1486).
- If the DOM element provided to [.type()](/api/commands/type) is already in
  focus, Cypress no longer attempts to click on the DOM element. This allows you
  to call `.focus()` on elements that are focusable, but not necessarily
  clickable and type into them using `.type()`. Fixes
  [#3001](https://github.com/cypress-io/cypress/issues/3001) and
  [#4420](https://github.com/cypress-io/cypress/issues/4420).
- Some elements inside of a parent with CSS `overflow: hidden` that flow outside
  of its parent are now properly considered hidden.
  [#4161](https://github.com/cypress-io/cypress/issues/4161)
- Elements that are inside a parent with CSS `position: absolute` which is
  itself inside of a parent element with `overflow: hidden` are now properly
  considered visible. Fixes
  [#4395](https://github.com/cypress-io/cypress/issues/4395) and
  [#755](https://github.com/cypress-io/cypress/issues/755).
- `<option>` and `<optgroup>` elements are now properly considered visible if it
  is contained within a visible `<select>`. Fixes
  [#4473](https://github.com/cypress-io/cypress/issues/4473).
- `<body>` and `<html>` elements are now properly always considered visible.
  Fixes [#4475](https://github.com/cypress-io/cypress/issues/4475).
- `<td>` and `<tr>` elements with CSS `visibility: collapse` are now properly
  considered hidden. Fixes
  [#4476](https://github.com/cypress-io/cypress/issues/4476).
- We now correctly handle form submission when using `.type('{enter}')` on a
  form containing a button of type `reset`. Fixes
  [#3909](https://github.com/cypress-io/cypress/issues/3909).
- If a site's `content-type` is `null`, `undefined` or cannot be determined
  during [`cy.visit()`](/api/commands/visit), we now look at the content of the
  site and evaluate whether it looks like HTML. If it does look like HTML we no
  longer error and continue as if it the site's `content-type` is `text/html`.
  [#1727](https://github.com/cypress-io/cypress/issues/1727)
  [#773](https://github.com/cypress-io/cypress/issues/773)
  [#3101](https://github.com/cypress-io/cypress/issues/3101).
- Previously Cypress would send the `auth` header to any URLs that match the
  CORS origin of the original `auth` header. We now correctly only send the
  `auth` headers when there is an exact match on the
  [protection space](https://tools.ietf.org/html/rfc7235#section-2.2). Fixes
  [#4267](https://github.com/cypress-io/cypress/issues/4267).
- Requests that go through [cy.visit()](/api/commands/visit) or
  [cy.request()](/api/commands/request) are now automatically retried on
  `ENOTFOUND` errors. Fixes
  [#4424](https://github.com/cypress-io/cypress/issues/4424) and
  [#1755](https://github.com/cypress-io/cypress/issues/1755).
- Cypress now errors when the `body` parameter passed to
  [cy.request()](/api/commands/request) contains a circular reference. Fixed in
  [#4407](https://github.com/cypress-io/cypress/pull/4407).
- We fixed an issue where the `ignoreTestFiles` configuration was being filtered
  out when passed via a command line flag, so in effect being ignored. Fixes
  [#1696](https://github.com/cypress-io/cypress/issues/1696).
- Setting `NO_PROXY` is now respected for HTTPS urls, as it should be. Fixes
  [#4303](https://github.com/cypress-io/cypress/issues/4303).
- When running tests with non-string test titles, the screenshots now
  automatically stringify the test titles instead of throwing an error. Fixes
  [#4310](https://github.com/cypress-io/cypress/issues/4310).
- Cypress no longer incorrectly errors when calling `cy.window().screenshot()`,
  `cy.window().scrollTo()` or `cy.window().trigger()` in an application with
  multiple iframes. Fixes
  [#4396](https://github.com/cypress-io/cypress/issues/4396).
- Fixed a regression in [3.3.0](#3-3-0) causing some
  users using proxy to see the "Browser was not launched through Cypress" error
  during `cypress open`. This was caused by incorrectly routing requests for
  Cypress's internal server on `localhost` through the user's proxy. Fixes
  [#4410](https://github.com/cypress-io/cypress/issues/4410).
- We fixed situations during a test failure where the Test Runner would throw
  `RangeError: Maximum call stack size exceeded`. Fixes
  [#1958](https://github.com/cypress-io/cypress/issues/1958) and
  [#4346](https://github.com/cypress-io/cypress/issues/4346).
- Fixed issue where `window.performance.getEntriesByType` would return
  `undefined` instead of an array within application code when using
  [cy.clock()](/api/commands/clock). Fixes
  [#3625](https://github.com/cypress-io/cypress/issues/3625).
- Passing an array of strings to `ignoreTestFiles` no longer causes an error to
  throw. Fixes [#4312](https://github.com/cypress-io/cypress/issues/4312).
- Fixed a visual bug when aliasing a non-route subject multiple times that would
  cause the Test Runner to show 'undefined' alias with empty counts. Fixes
  [#4429](https://github.com/cypress-io/cypress/issues/4429).
- Fixed regression introduced in [3.2.0](#3-2-0)
  where Cypress would error because it could not find a type definition file for
  '../sinon'. Fixes [#4272](https://github.com/cypress-io/cypress/issues/4272).
- [cy.writeFile()](/api/commands/writefile) no longer errors in TypeScript files
  when passing an `options` object as its third argument. Fixes
  [#4461](https://github.com/cypress-io/cypress/issues/4461).
- [cy.stub()](/api/commands/stub) no longer errors in TypeScript files when
  evaluating returns. Fixes
  [#4302](https://github.com/cypress-io/cypress/issues/4302).

**Misc:**

- Warnings are now displayed when recording in `cypress run` to warn when a
  project is nearing its organization's usage limit. They also clearly explain
  any consequences of going over a plan's usage limit. Addresses
  [#4530](https://github.com/cypress-io/cypress/issues/4530).
- An warning icon with a tooltip is displayed in the Runs tab of the Test Runner
  when parallelization was disabled during the run due to being over the
  organization's usage limit. Addresses
  [#4489](https://github.com/cypress-io/cypress/issues/4489).
- You can now opt out of sending exceptions to `https://api.cypress.io` by
  setting `CYPRESS_CRASH_REPORTS=0` in your system environment variables.
  [#4386](https://github.com/cypress-io/cypress/issues/4386)
- We are now capturing Google Cloud build details when recording tests to the
  Cypress Dashboard. Addresses
  [#3582](https://github.com/cypress-io/cypress/issues/3582).
- The tests titles and headers in the Command Log no longer truncate with
  ellipsis when the text is longer than that width of the Command Log. Instead
  the text wraps so that all text is shown. Addresses
  [#3947](https://github.com/cypress-io/cypress/issues/3947).
- Special env vars are now truncated in `Cypress.env()` and the debug logs.
  Addresses [#4501](https://github.com/cypress-io/cypress/issues/4501).
- The `projectId` in now displayed in the configuration in the Test Runner
  settings like all other configuration values. Fixes
  [#4500](https://github.com/cypress-io/cypress/issues/4500).
- When recording to the Dashboard, unrecognized warnings coming from the API
  server are now displayed in stdout. Fixes
  [#4489](https://github.com/cypress-io/cypress/issues/4489).

**Documentation Changes:**

- New [Code Coverage](/app/tooling/code-coverage) doc. Addressed in
  [#1744](https://github.com/cypress-io/cypress-documentation/pull/1744).
- New [Visual Testing](/app/tooling/visual-testing) doc. Addressed in
  [#1744](https://github.com/cypress-io/cypress-documentation/pull/1536).
- New Courses doc to list online courses that
  teach end-to-end testing with Cypress. Addressed in
  [#1766](https://github.com/cypress-io/cypress-documentation/pull/1766).
- Added a section about
  [Hacking on Cypress](/app/references/troubleshooting#Hacking-on-Cypress) in the
  Debugging doc. Addressed in
  [#1783](https://github.com/cypress-io/cypress-documentation/pull/1783).
- Added a section on how to
  [opt out of sending exception data to Cypress](/app/references/advanced-installation#Opt-out-of-sending-exception-data-to-Cypress)
  in the Installing Cypress doc.

**Dependency Updates**

- Removed `electron-positioner` since it was no longer being used. Addressed in
  [#4502](https://github.com/cypress-io/cypress/pull/4502).
- Upgraded `chokidar` from `1.7.0` to `3.0.1`. Addressed in
  [#4487](https://github.com/cypress-io/cypress/pull/4487).
- Upgraded `cookie` from `0.3.1` to `0.4.0`. Addressed in
  [#4329](https://github.com/cypress-io/cypress/pull/4329).
- Upgraded `dependency-tree` from `6.5.0` to `7.0.2`. Addressed in
  [#4364](https://github.com/cypress-io/cypress/pull/4364).
- Upgraded `fs-extra` from `0.30.0` to `8.0.1`. Upgraded in CLI package only to
  `5.0.0`. Addressed in
  [#4418](https://github.com/cypress-io/cypress/pull/4418),
  [#4419](https://github.com/cypress-io/cypress/pull/4419),
  [#4422](https://github.com/cypress-io/cypress/pull/4422),
  [#4437](https://github.com/cypress-io/cypress/pull/4437),
  [#4555](https://github.com/cypress-io/cypress/pull/4555),
  [#4559](https://github.com/cypress-io/cypress/pull/4559),
  [#4571](https://github.com/cypress-io/cypress/pull/4571),
  [#4581](https://github.com/cypress-io/cypress/pull/4581).
- Upgraded `mocha-junit-reporter` from `1.18.0` to `1.23.0`. Addressed in
  [#4417](https://github.com/cypress-io/cypress/pull/4417).
- Upgraded `pluralize` from `7.0.0` to `8.0.0`. Addressed in
  [#4438](https://github.com/cypress-io/cypress/pull/4438).
- Upgraded `shell-env` from `0.3.0` to `3.0.0`. Addressed in
  [#4466](https://github.com/cypress-io/cypress/pull/4466),
  [#4467](https://github.com/cypress-io/cypress/pull/4467), and
  [#4471](https://github.com/cypress-io/cypress/pull/4471).
- Upgraded `winston` from `0.9.0` to `2.4.4`. Addressed in
  [#4538](https://github.com/cypress-io/cypress/pull/4538).
- We updated and removed some dependencies used for development.

## 3.3.1

_Released 05/23/2019_

**News:**

- We've
  [written a blog post](https://www.cypress.io/blog/2019/05/22/how-we-improved-network-speed-by-300-in-cypress-3-3-0/)
  about the 300% increase in proxy performance delivered in
  [3.3.0](#3-3-0).

**Bugfixes:**

- Cypress no longer accidentally prints internal Electron logs when running
  `cypress run`. This bug would exhibit itself when verifying and running
  Cypress the first time after installation. You may have seen these logs when
  running in CI. Fixes
  [#4255](https://github.com/cypress-io/cypress/issues/4255).
- Fixed a bug for users running external network proxies that prevented requests
  from completing. Requests should now all work correctly. Fixes
  [#4257](https://github.com/cypress-io/cypress/issues/4257).
- Fixed a regression in [3.3.0](#3-3-0) causing
  large requests such as `multipart/form-data` uploads to hang. Fixes
  [#4240](https://github.com/cypress-io/cypress/issues/4240),
  [#4252](https://github.com/cypress-io/cypress/issues/4252), and
  [#4253](https://github.com/cypress-io/cypress/issues/4253).
- Fixed issue where support for `have.focus`, `not.have.focus`, `be.focused` and
  `not.be.focused` [assertions](/app/references/assertions) were not working.
  Fixes [#4265](https://github.com/cypress-io/cypress/issues/4265).
- Names given to [`.as()`](/api/commands/as) now work properly when they contain
  a `.` character. Fixes
  [#3512](https://github.com/cypress-io/cypress/issues/3512).
- The proper error is now thrown when passing `{log: false}` to a Cypress
  command that failed. Fixes
  [#3847](https://github.com/cypress-io/cypress/issues/3847).
- Fixed an issue where highlighting a command's snapshot would throw an error
  when no application was rendered in the AUT frame. Fixes
  [#4177](https://github.com/cypress-io/cypress/issues/4177).
- We now properly detect the branch name when running Cypress in AppVeyor. Fixed
  in [#4234](https://github.com/cypress-io/cypress/pull/4234).

**Misc:**

- Fix capitalization of `Xvfb` in error messages. Addressed in
  [#4262](https://github.com/cypress-io/cypress/pull/4262).

**Documentation Changes:**

- We have some newly translated documentation in
  [Chinese](http://on.cypress.io/zh-cn) and [Japanese](http://on.cypress.io/ja).
  If you'd like to help in translating more, please open a pull request in our
  [documentation repo](https://github.com/cypress-io/cypress-documentation).

## 3.3.0

_Released 05/17/2019_

**News:**

- We've
  [written a blog post](https://www.cypress.io/blog/2019/05/22/how-we-improved-network-speed-by-300-in-cypress-3-3-0/)
  about the 300% increase in proxy performance delivered in `3.3.0`.

**Features:**

- Cypress now automatically reads from your system's `HTTP_PROXY`,
  `HTTPS_PROXY`, and `NO_PROXY` environment variables and proxies traffic
  accordingly through Cypress based on these values. This includes network
  traffic within your application under test, when downloading Cypress, and when
  accessing 'Runs' within the Test Runner. Please read our new
  [Proxy Configuration](/app/references/proxy-configuration) doc to
  understand more about proxy configuration in Cypress. Fixes
  [#672](https://github.com/cypress-io/cypress/issues/672),
  [#733](https://github.com/cypress-io/cypress/issues/733),
  [#939](https://github.com/cypress-io/cypress/issues/939),
  [#1039](https://github.com/cypress-io/cypress/issues/1039),
  [#1459](https://github.com/cypress-io/cypress/issues/1459),
  [#1469](https://github.com/cypress-io/cypress/issues/1469),
  [#1470](https://github.com/cypress-io/cypress/issues/1470),
  [#1541](https://github.com/cypress-io/cypress/issues/1541),
  [#1608](https://github.com/cypress-io/cypress/issues/1608),
  [#2295](https://github.com/cypress-io/cypress/issues/2295),
  [#3855](https://github.com/cypress-io/cypress/issues/3855),
  [#3865](https://github.com/cypress-io/cypress/issues/3865),
  [#1401](https://github.com/cypress-io/cypress/issues/1401) and
  [#3857](https://github.com/cypress-io/cypress/issues/3857).
- Your project's current proxy settings now display in the
  [Settings of the Test Runner](/app/references/proxy-configuration#View-proxy-settings-in-Cypress).
  Addresses [#3856](https://github.com/cypress-io/cypress/issues/3856).
- Support for `have.focus`, `not.have.focus`, `be.focused` and `not.be.focused`
  [assertions](/app/references/assertions) have been added. Addresses
  [#97](https://github.com/cypress-io/cypress/issues/97).
- We now offer a separate 32bit and 64bit build for Windows. Addresses
  [#716](https://github.com/cypress-io/cypress/issues/716),
  [#787](https://github.com/cypress-io/cypress/issues/787),
  [#2095](https://github.com/cypress-io/cypress/issues/2095),
  [#706](https://github.com/cypress-io/cypress/issues/706),
  [#3706](https://github.com/cypress-io/cypress/issues/3706), and
  [#4016](https://github.com/cypress-io/cypress/issues/4016).
- Requests that go through [cy.visit()](/api/commands/visit) or
  [cy.request()](/api/commands/request) are now automatically retried under the
  hood when the request fails. This more closely reflects Chrome's default
  behavior on requests. Addresses
  [#4013](https://github.com/cypress-io/cypress/issues/4013),
  [#898](https://github.com/cypress-io/cypress/issues/898) and
  [#1013](https://github.com/cypress-io/cypress/issues/1013).
- [cy.visit()](/api/commands/visit) and [cy.request()](/api/commands/request)
  now support new options `retryOnStatusCodeFailure` and `retryOnNetworkFailure`
  to allow changing Cypress's automatic request retry on status codes and
  network errors. Addresses
  [#4013](https://github.com/cypress-io/cypress/issues/4013),
  [#898](https://github.com/cypress-io/cypress/issues/898) and
  [#1013](https://github.com/cypress-io/cypress/issues/1013).
- [.type()](/api/commands/type) now supports the special character sequences
  `{insert}`, `{pageup}`, and `{pagedown}`. Addresses
  [#3845](https://github.com/cypress-io/cypress/issues/3845).
- We now indicate which XHRs match which alias in the Command Log on
  [.wait()](/api/commands/wait) when they match an alias multiple times.
  Addresses [#477](https://github.com/cypress-io/cypress/issues/477).
- The console log when clicking on the [cy.visit()](/api/commands/visit) command
  now displays its resolved `options` arguments. Addresses
  [#3721](https://github.com/cypress-io/cypress/issues/3721).
- There's a new 'canceled' XHR status shown on the Command Log to indicate the
  difference between calling `xhr.abort()` and the browser canceling the request
  due to page navigation. Addresses
  [#3973](https://github.com/cypress-io/cypress/issues/3973).
- The Electron browser now runs Chrome Version 61. Addresses
  [#4000](https://github.com/cypress-io/cypress/issues/4000).
- Running Cypress via `cypress run` now supports scripts of `type="module"`.
  Fixes [#3696](https://github.com/cypress-io/cypress/issues/3696).
- Exposed [Cypress.isCy()](/api/cypress-api/iscy) method to check if a value is
  a valid instance of `cy` or a `cy` chainable. Fixes
  [#3822](https://github.com/cypress-io/cypress/issues/3822).
- There is a new "Download Chromium" menu item in the "Help" menu of the Test
  Runner links to Cypress's
  [Chromium Download Tool](https://on.cypress.io/chromium-downloads). Addresses
  [#3977](https://github.com/cypress-io/cypress/issues/3977)

**Bugfixes:**

- Fixed a regression introduced in [3.2.0](#3-2-0)
  that caused an error to throw when visiting domains with certain public
  suffixes. Fixes [#3717](https://github.com/cypress-io/cypress/issues/3717).
- When running Cypress with `NODE_OPTIONS` environment variables set, Cypress no
  longer issues an incorrect 0 exit code.
  [#1676](https://github.com/cypress-io/cypress/issues/1676)
- Fixed a regression introduced in [3.2.0](#3-2-0)
  that caused [.its()](/api/commands/its) to no longer retry when it yields
  `undefined`. [#3837](https://github.com/cypress-io/cypress/issues/3837)
- Fixed a regression introduced in [3.2.0](#3-2-0)
  that caused [cy.fixture()](/api/commands/fixture) to throw a `EISDIR` error if
  a directory had the same name as a file within that same directory. Fixes
  [#3739](https://github.com/cypress-io/cypress/issues/3739).
- `user-agent` headers sent as arguments to
  [cy.request()](/api/commands/request) and [cy.visit()](/api/commands/visit)
  are now properly sent. Fixes
  [#3873](https://github.com/cypress-io/cypress/issues/3873) and
  [#3719](https://github.com/cypress-io/cypress/issues/3719).
- When a request is proxied through Cypress and there is a network error, we no
  longer send an HTML response with a 500 status code. We now kill the
  browser-facing socket and let the network error be handled by the application
  under test. Fixes [#4101](https://github.com/cypress-io/cypress/issues/4101),
  [#4231](https://github.com/cypress-io/cypress/issues/4231),
  [#1036](https://github.com/cypress-io/cypress/issues/1036),
  [#4231](https://github.com/cypress-io/cypress/issues/4231), and
  [#1398](https://github.com/cypress-io/cypress/issues/1398).
- We changed Cypress's implementation to no longer rely on internal XHR events
  when the browser navigates. This fixes a a bug in Chrome 71+ that could cause
  XHRs to pend forever. Fixes
  [#3973](https://github.com/cypress-io/cypress/issues/3973) and
  [#4130](https://github.com/cypress-io/cypress/issues/4130)
- We greatly improved the speed of proxied requests through our network layer.
  Fixes [#3192](https://github.com/cypress-io/cypress/issues/3192) and
  [#1469](https://github.com/cypress-io/cypress/issues/1469).
- If an error occurs during `cypress verify`, we now kill the verification
  process after 10 seconds and print the error message. This should prevent some
  situations where Cypress would hang during installation or verification and
  never exit. Fixes [#819](https://github.com/cypress-io/cypress/issues/819).
- Cypress automatically retries `cypress verify` and `cypress run` commands by
  starting its own Xvfb server on Linux if the first attempt fails due to
  possible `DISPLAY` misconfiguration. Addresses
  [#4034](https://github.com/cypress-io/cypress/issues/4034).
- Cypress now properly handles typing JavaScript object prototype methods (like
  `hasOwnProperty`) into [`.type()`](/api/commands/type). Fixes
  [#3423](https://github.com/cypress-io/cypress/issues/3423).
- We now set the `form` option to `true` if the `Content-Type` header equals
  `application/x-www-form-urlencoded` and `json` is not already set by a user.
  This fixes a situation where Cypress would try to parse the `body` as a
  string, resulting in a confusing error message. Fixes
  [#2923](https://github.com/cypress-io/cypress/issues/2923).
- [cy.contains()](/api/commands/contains) now correctly handles comma delimited
  arguments passed to the selector argument. Fixes
  [#2407](https://github.com/cypress-io/cypress/issues/2407).
- Passing a browser path containing spaces now works properly when passed to the
  `--browser` argument. Fixes
  [#3979](https://github.com/cypress-io/cypress/issues/3979)
- Fixed display of tooltips when selecting elements from the Selector Playground
  so that they display at the correct coordinates when scrolling. Fixes
  [#1351](https://github.com/cypress-io/cypress/issues/1351).
- The lists of spec files now display at the correct indentation level when they
  are nested more than 5 directories deep. Fixes
  [#3652](https://github.com/cypress-io/cypress/issues/3652).
- Cypress now properly parses environment variables with empty values. Fixes
  [#3742](https://github.com/cypress-io/cypress/issues/3742).
- Assertions running outside of a test are now properly handled in Cypress
  instead of throwing internal errors. Fixes
  [#3926](https://github.com/cypress-io/cypress/issues/3926).
- [Cypress.log()](/api/cypress-api/cypress-log) now throws an error when not
  properly passed an object as its argument. Addresses
  [#3658](https://github.com/cypress-io/cypress/issues/3658).
- [Cypress.log()](/api/cypress-api/cypress-log) no longer throws when called
  before any other Cypress commands. Fixes
  [#3658](https://github.com/cypress-io/cypress/issues/3658).

**Misc:**

- We now better support capturing environment variables within Azure DevOps.
  Addresses [#3657](https://github.com/cypress-io/cypress/issues/3657).
- Cypress now only scans for spec changes when the watcher sees changes, rather
  than polling to scan. Addresses
  [#3069](https://github.com/cypress-io/cypress/issues/3069).
- The ability to open the context menu to see "Inspect Element" has been
  reenabled in the Electron browser. Addresses
  [#4002](https://github.com/cypress-io/cypress/issues/4002).
- We no longer package non-Windows FFmpeg builds with Windows builds, resulting
  in a 35-40% reduction in zipped size and a 36-43% reduction in unzipped size
  of download. Addresses
  [#3888](https://github.com/cypress-io/cypress/issues/3888).
- The warning messages when going over test recording limits have been updated
  to correctly display 'monthly tests' and 'private tests' where necessary.
  Addresses [#4024](https://github.com/cypress-io/cypress/issues/4024).
- When an HTTP request is received by the proxy layer, by default, we send it
  with a `Connection: keep-alive` header so that the connection will be reused
  if possible. Addresses
  [#3857](https://github.com/cypress-io/cypress/issues/3857).
- Improved accessibility of Test Runner for screen readers. Addresses
  [#3850](https://github.com/cypress-io/cypress/issues/3850).
- Cypress type definition now allow a `timeout` option in
  [cy.hash()](/api/commands/hash). Fixes
  [#3844](https://github.com/cypress-io/cypress/issues/3844).
- Fixed type definition for `match` assertion so that it now only accepts
  `RegExp` type arguments. Fixes
  [#2578](https://github.com/cypress-io/cypress/issues/2578).
- The [.trigger()](/api/commands/trigger) type definition now expects its
  `options` to be `ObjectLike`. Addressed in
  [#3809](https://github.com/cypress-io/cypress/pull/3809).
- The [cy.clock()](/api/commands/clock) type definition now allows for type
  `Date`. Fixed in [#4106](https://github.com/cypress-io/cypress/pull/4106).
- Added type definition for undocumented `Cypress.LocalStorage.clear` method.
  Fixes [#4070](https://github.com/cypress-io/cypress/issues/4070).
- Added type definition for [Cypress.isCy()](/api/cypress-api/iscy) method.
  Fixes [#3822](https://github.com/cypress-io/cypress/issues/3822).
- Added missing type definitions for some [cy.visit()](/api/commands/visit)
  options. Fixes [#3989](https://github.com/cypress-io/cypress/issues/3989).
- The spinner animation should more smoothly spin when a command is pending in
  the Test Runner. Addressed in
  [#4005](https://github.com/cypress-io/cypress/pull/4005).

**Documentation Changes:**

- New [Proxy Configuration](/app/references/proxy-configuration) doc.
  Addressed in
  [#1486](https://github.com/cypress-io/cypress-documentation/pull/1486).
- Added `{insert}`, `{pageup}`, and `{pagedown}` as supported special character
  sequences to [.type()](/api/commands/type#Arguments). Addressed in
  [#1567](https://github.com/cypress-io/cypress-documentation/pull/1567).
- Added newly supported `focus` assertion to
  [Assertions](/app/references/assertions) doc. Addresses
  [#1372](https://github.com/cypress-io/cypress-documentation/pull/1372).
- Added new options `retryOnStatusCodeFailure` and `retryOnNetworkFailure` to
  [cy.visit()](/api/commands/visit) and [cy.request()](/api/commands/request).
- Updated
  [install instructions for Windows](/app/references/advanced-installation#Download-URLs)
  on how to target 64bit and 32bit infrastructures. Addressed in
  [#1568](https://github.com/cypress-io/cypress-documentation/issues/1568).
- Updated [.its()](/api/commands/its) and [.invoke()](/api/commands/invoke) docs
  to better explain how default assertions are handled. Addresses
  [#1643](https://github.com/cypress-io/cypress-documentation/issues/1643).
- Updated our [Roadmap](/app/references/roadmap) to more closely reflect the
  work we are doing. Addressed in
  [#1567](https://github.com/cypress-io/cypress-documentation/pull/1639).
- Added a section about how to request our new
  [Open Source Plan](/cloud/account-management/billing-and-usage#Requesting-OSS-plan-for-an-Org)
  in the Dashboard Service doc. Addressed in
  [#1567](https://github.com/cypress-io/cypress-documentation/pull/1584).

**Dependency Updates**

- Upgraded `commit-info` from `2.1.2` to `2.1.2`. Addressed in
  [#4045](https://github.com/cypress-io/cypress/pull/4045)
- Upgraded `data-uri-to-buffer` from `0.0.4` to `1.2.0`. Addresses
  [#4152](https://github.com/cypress-io/cypress/issues/4152).
- Upgraded `electron` from `1.8.2` to `2.0.18`. Addresses
  [#4000](https://github.com/cypress-io/cypress/issues/4000).
- Upgraded `electron-packager` from `9.1.0` to `13.1.1`. Addresses
  [#4155](https://github.com/cypress-io/cypress/issues/4155).
- Upgraded `express-handlebars` from `3.0.0` to `3.0.2`. Addressed in
  [#4086](https://github.com/cypress-io/cypress/pull/4086).
- Upgraded `find-process` from `1.2.1` to `1.4.1`. Addressed in
  [#4087](https://github.com/cypress-io/cypress/pull/4087).
- Upgraded `getos` from `2.8.4` to `3.1.1`. Addressed in
  [#4222](https://github.com/cypress-io/cypress/pull/4222).
- Upgraded `http-status-codes` from `1.3.0` to `1.3.2`. Addressed in
  [#3949](https://github.com/cypress-io/cypress/pull/3949).
- Upgraded `jimp` from `0.6.0` to `0.6.4`. Addressed in
  [#4097](https://github.com/cypress-io/cypress/pull/4097).
- Removed `method-override`. Addressed in
  [#4209](https://github.com/cypress-io/cypress/pull/4209).
- Upgraded `node` from `8.2.1` to `8.9.3`. Addressed in
  [#4001](https://github.com/cypress-io/cypress/pull/4001).
- Downgraded `parse-domain` from `2.1.7` to `2.0.0` to avoid a regression released
  in `parse-domain`. Addresses
  [#3717](https://github.com/cypress-io/cypress/issues/3717).
- Upgraded `pluralize` from `3.1.0` to `7.0.0`. Addressed in
  [#4205](https://github.com/cypress-io/cypress/pull/4205) and
  [#4206](https://github.com/cypress-io/cypress/pull/4206).
- Upgraded `semver` from `5.6.0` to `5.7.0`. Addressed in
  [#4112](https://github.com/cypress-io/cypress/pull/4112).
- Upgraded `send` from `0.16.2` to `0.17.0`. Addressed in
  [#4134](https://github.com/cypress-io/cypress/pull/4134).
- Upgraded `supports-color` from `5.5.0` to `6.1.0`. Addressed in
  [#4150](https://github.com/cypress-io/cypress/pull/4150).
- Removed `tar-fs`. Addressed in
  [#4148](https://github.com/cypress-io/cypress/pull/4148).
- Upgraded `term-size` from `1.2.0` to `2.0.0`. Addressed in
  [#4148](https://github.com/cypress-io/cypress/pull/4148).
- Upgraded `tmp` from `0.0.33` to `0.1.0`. Addressed in
  [#4111](https://github.com/cypress-io/cypress/pull/4111).
- Upgraded `trash` from `4.3.0` to `5.2.0`. Addressed in
  [#4140](https://github.com/cypress-io/cypress/pull/4140).
- Upgraded `url-parse` from `1.4.4` to `1.4.7`. Addressed in
  [#4110](https://github.com/cypress-io/cypress/pull/4110).
- Upgraded `widest-line` from `2.0.1` to `3.1.0`. Addressed in
  [#4139](https://github.com/cypress-io/cypress/pull/4139).
- We updated and removed some dependencies used for development.

## 3.2.0

_Released 03/15/2019_

**Features:**

- [cy.visit()](/api/commands/visit) has been expanded to allow options `url`,
  `method`, `body`, and `headers`. This allows [cy.visit()](/api/commands/visit)
  to be called with a `POST` method or with headers like `Accept-Language` or
  `Authorization`. Fixes
  [#1500](https://github.com/cypress-io/cypress/issues/1500),
  [#1904](https://github.com/cypress-io/cypress/issues/1904) and
  [#908](https://github.com/cypress-io/cypress/issues/908).
- [cy.request()](/api/commands/request) now allows any valid HTTP `method` to be
  used including `TRACE`, `COPY`, `LOCK`, `MKCOL`, `MOVE`, `PURGE`, `PROPFIND`,
  `PROPPATCH`, `UNLOCK`, `REPORT`, `MKACTIVITY`, `CHECKOUT`, `MERGE`,
  `M-SEARCH`, `NOTIFY`, `SUBSCRIBE`, `UNSUBSCRIBE`, `SEARCH`, and `CONNECT`.
  Addresses [#1302](https://github.com/cypress-io/cypress/issues/1302)
- The
  [`--browser` argument](/app/references/command-line#cypress-run-browser-lt-browser-name-or-path-gt)
  of the [Command Line](/app/references/command-line) and the
  [`browser` argument](/app/references/module-api#cypressrun) of the
  [Module API](/app/references/module-api) have been updated to allow passing a
  `<path>`. Addresses
  [#1026](https://github.com/cypress-io/cypress/issues/1026).
- [cy.type()](/api/commands/type) now accepts `{home}` and `{end}` special
  character sequences to move the cursor to the start or end of a line.
  Addresses [#2033](https://github.com/cypress-io/cypress/issues/2033).
- The Cypress Chrome extension now has a static ID of
  `caljajdfkjjjdehjdoimjkkakekklcck`. This allows Cypress to be added to your
  allowed extensions for those working under corporate policies that prohibit
  extensions. Addresses
  [#3673](https://github.com/cypress-io/cypress/issues/3673),
  [#1239](https://github.com/cypress-io/cypress/issues/1239) and
  [#2494](https://github.com/cypress-io/cypress/issues/2494).

**Bugfixes:**

- Problems logging in through GitHub in the Test Runner have been fixed. The
  GitHub login window no longer shows the browser support banner and the
  "Authorize cypress-io" button is no longer disabled. Fixes
  [#1251](https://github.com/cypress-io/cypress/issues/1251).
- Fixed an issue when testing applications using older versions of jQuery. They
  now no longer throw `item.first is not a function`. Fixes
  [#2927](https://github.com/cypress-io/cypress/issues/2927).
- Cypress now detects more instances of `browser` installations. Fixes
  [#3183](https://github.com/cypress-io/cypress/issues/3183) and
  [#3218](https://github.com/cypress-io/cypress/issues/3218).
- Fixed issue with loading fixture files containing more than one `.` in their
  filename while not specifying the file extension. We are also displaying a
  clearer warning when a fixture file cannot be found. Fixes
  [#1402](https://github.com/cypress-io/cypress/issues/1402).
- All third party `@types` have been moved from Cypress `dependencies` into
  `devDependencies`. This should fix situations where user's type dependencies
  were conflicting with Cypress's third party type definitions. Fixes
  [#3371](https://github.com/cypress-io/cypress/issues/3371) and
  [#1227](https://github.com/cypress-io/cypress/issues/1227).
- `Cypress.config('baseUrl')` has been updated to no longer strip singular `/`
  at the end of urls and instead only strip instances of multiple `/`. Fixes
  [#3540](https://github.com/cypress-io/cypress/issues/3540).
- The prompt to "Restore pages?" is no longer displayed within Chrome upon
  restarting a crashed Chrome window. Addresses
  [#2048](https://github.com/cypress-io/cypress/issues/2048).
- [cy.wrap()](/api/commands/wrap) no longer throws an error when a non-jQuery
  wrapped DOM element is passed in as an argument. Fixes
  [#3549](https://github.com/cypress-io/cypress/issues/3549).
- Fixed issue where all arguments passed to `setTimeout` or `setInterval` were
  not properly passed on to the target function. Fixes
  [#3592](https://github.com/cypress-io/cypress/issues/3592).
- [.filter()](/api/commands/filter) has been updated so that when called with a
  function, the options are now properly read. Fixes
  [#3315](https://github.com/cypress-io/cypress/issues/3315).
- Cypress's recognition of websites attempting framebusting has been updated to
  include framebusting code wrapped within `()`.
  [#3267](https://github.com/cypress-io/cypress/issues/3267)
- When `.its()` returns `undefined` it no longer errors. It will now follow the
  same logic as all other commands and only fail when directly by a
  [.should()](/api/commands/should) command with an assertion that is not met.
  Fixes [#1531](https://github.com/cypress-io/cypress/issues/1531).
- When [cy.wrap()](/api/commands/wrap) is followed directly by a
  [.should()](/api/commands/should) command, `cy.wrap()` will now
  [retry](/app/core-concepts/retry-ability) when its argument evaluates to
  `undefined` until it meets the requirements of the assertion or the
  `cy.wrap()` command times out. Fixes
  [#3241](https://github.com/cypress-io/cypress/issues/3241).

**Misc:**

- We now display a warning when passing an argument to `--spec` that is not
  surrounded by quotes `""` recommending that the argument instead be surrounded
  by quotes. In some cases, not providing quotes can cause the arguments to be
  read in a way that is likely not its intended use. Addresses
  [#3318](https://github.com/cypress-io/cypress/issues/3318) and
  [#2298](https://github.com/cypress-io/cypress/issues/2298).
- The number of logs printed when installing Cypress in Docker has been reduced.
  Partially addresses
  [#1243](https://github.com/cypress-io/cypress/issues/1243).
- The seeded Kitchen Sink examples have some new examples showing how to add a
  message to assertions, how to compare the text content of two elements, and
  how to make assertions about `data` attributes. The examples also have some
  small typo fixes. Fixes
  [#502](https://github.com/cypress-io/cypress/issues/502). Addressed in
  [#3272](https://github.com/cypress-io/cypress/pull/3272),
  [#3287](https://github.com/cypress-io/cypress/pull/3287), and
  [#3700](https://github.com/cypress-io/cypress/pull/3700).
- We now only mount internal servers on `loopback`. Addresses
  [#3712](https://github.com/cypress-io/cypress/issues/3712).
- The instructions in Cypress's update window now include `yarn` update
  instructions alongside `npm`. Addresses
  [#2871](https://github.com/cypress-io/cypress/issues/2871).
- The spec file's font weight has been increased within the Test Runner for
  better readability. Addressed in
  [#3065](https://github.com/cypress-io/cypress/issues/3065).
- We improved the error message displayed when a record key is unrecognized
  during `cypress run`. Addresses
  [#1449](https://github.com/cypress-io/cypress/issues/1449).
- We improved the typings when using `Cypress.on` to listen for `window.alert`
  events to allow for `Sinon.stub`. Fixes
  [#3451](https://github.com/cypress-io/cypress/issues/3451).
- Fixed typo in typing for [.trigger](/api/commands/trigger) options. Addressed
  in [#3588](https://github.com/cypress-io/cypress/pull/3588).

**Documentation Changes:**

- New [Retryability](/app/core-concepts/retry-ability) doc
  [#1278](https://github.com/cypress-io/cypress-documentation/issues/1278)
- Updated `--browser` and `browser` args to accept `path`
  [#1419](https://github.com/cypress-io/cypress-documentation/issues/1419)
- Document how to accept or reject project transfers
  [#1474](https://github.com/cypress-io/cypress-documentation/issues/1474)
- Updated [docs](/app/references/launching-browsers) on explain how to run Chrome
  and Chromium browsers
  [#1339](https://github.com/cypress-io/cypress-documentation/issues/1339)
- Added `{home}` and `{end}` character sequences to
  [`cy.type()`](/api/commands/type) doc. Also wrote better description of what
  `{downarrow}` and `{uparrow}` character sequences actually do.
  [#1347](https://github.com/cypress-io/cypress-documentation/pull/1347)
- Added all newly supported HTTP methods to
  [cy.request()](/api/commands/request) doc.
- Add new section to
  [Troubleshooting](/app/references/troubleshooting#Allow-the-Cypress-Chrome-extension)
  doc explaining how to allow the Cypress Chrome extension.
- Fixed code example for google analytics stubbing
  [#1454](https://github.com/cypress-io/cypress-documentation/issues/1454)

**Dependency Updates**

- Upgraded `@cypress/commit-info` from `2.1.1` to `2.1.2`.
  [#3327](https://github.com/cypress-io/cypress/pull/3327).
- Upgraded `@cypress/xvfb` from `1.2.3` to `1.2.4`.
  [#3328](https://github.com/cypress-io/cypress/pull/3328).
- Upgraded `@ffmpeg-installer/ffmpeg` from `1.0.15` to `1.0.17`.
  [#3329](https://github.com/cypress-io/cypress/pull/3329).
- Upgraded `cachedir` from `1.3.0` to `2.1.0`.
  [#3660](https://github.com/cypress-io/cypress/pull/3660).
- Upgraded `chalk` from `2.4.1` to `2.4.2`.
  [#3362](https://github.com/cypress-io/cypress/pull/3362).
- Upgraded `chokidar` from `1.6.0` to `1.7.0`.
  [#3363](https://github.com/cypress-io/cypress/pull/3363).
- Upgraded `coffee-script` from `1.12.5` to `1.12.7`.
  [#3365](https://github.com/cypress-io/cypress/pull/3365).
- Upgraded `commander` from `2.11.0` to `2.19.0`.
  [#3366](https://github.com/cypress-io/cypress/pull/3366).
- Upgraded `common-tags` from `1.4.0` to `1.8.0`.
  [#3368](https://github.com/cypress-io/cypress/pull/3368).
- Upgraded `compression` from `1.7.2` to `1.7.3`.
  [#3379](https://github.com/cypress-io/cypress/pull/3379).
- Upgraded `cookie` from `0.2.4` to `0.3.1`.
  [#3380](https://github.com/cypress-io/cypress/pull/3380).
- Upgraded `cookie-parser` from `1.4.3` to `1.4.4`.
  [#3443](https://github.com/cypress-io/cypress/pull/3443).
- Upgraded `dependency-tree` from `6.4.0` to `6.5.0`.
  [#3381](https://github.com/cypress-io/cypress/pull/3381).
- Upgraded `electron-context-menu` from `0.8.0` to `0.11.0`.
  [#3383](https://github.com/cypress-io/cypress/pull/3383).
- Upgraded `electron-packager` from `9.0.1` to `9.1.0`.
  [#3384](https://github.com/cypress-io/cypress/pull/3384).
- Upgraded `electron-positioner` from `3.0.0` to `3.0.1`.
  [#3385](https://github.com/cypress-io/cypress/pull/3385).
- Upgraded `errorhandler` from `1.1.1` to `1.5.0`.
  [#3386](https://github.com/cypress-io/cypress/pull/3386).
- Upgraded `express` from `4.16.2` to `4.16.4`.
  [#3409](https://github.com/cypress-io/cypress/pull/3409).
- Upgraded `extract-zip` from `1.6.6` to `1.6.7`.
  [#3410](https://github.com/cypress-io/cypress/pull/3410).
- Upgraded `glob` from `7.1.2` to `7.1.3`.
  [#3412](https://github.com/cypress-io/cypress/pull/3412).
- Upgraded `image-size` from `0.5.5` to `0.7.2`.
  [#3413](https://github.com/cypress-io/cypress/pull/3413) and
  [#3500](https://github.com/cypress-io/cypress/pull/3500).
- Upgraded `is-ci` from `1.0.10` to `1.2.1`.
  [#3414](https://github.com/cypress-io/cypress/pull/3414).
- Upgraded `lodash` from `4.17.4` to `4.17.11`.
  [#3344](https://github.com/cypress-io/cypress/pull/3344).
- Upgraded `mocha-junit-reporter` from `1.17.0` to `1.18.0`.
  [#3417](https://github.com/cypress-io/cypress/pull/3417).
- Upgraded `moment` from `2.23.0` to `2.24.0`.
  [#3433](https://github.com/cypress-io/cypress/pull/3433).
- Upgraded `morgan` from `1.3.0` to `1.9.1`.
  [#3434](https://github.com/cypress-io/cypress/pull/3434).
- Upgraded `node-uuid` from `1.4.1` to `1.4.8`.
  [#3436](https://github.com/cypress-io/cypress/pull/3436).
- Upgraded `parse-domain` from `2.0.0` to `2.1.7`.
  [#3437](https://github.com/cypress-io/cypress/pull/3437).
- Upgraded `request` from `2.87.0` to `2.88.0`.
  [#3444](https://github.com/cypress-io/cypress/pull/3444).
- Upgraded `request-progress` from `0.3.1` to `0.4.0`.
  [#3445](https://github.com/cypress-io/cypress/pull/3445).
- Upgraded `request-promise` from `4.1.1` to `4.2.4`.
  [#3446](https://github.com/cypress-io/cypress/pull/3446) and
  [#3476](https://github.com/cypress-io/cypress/pull/3476).
- Upgraded `return-deep-diff` from `0.2.9` to `0.3.0`.
  [#3447](https://github.com/cypress-io/cypress/pull/3447).
- Upgraded `send` from `0.14.2` to `0.16.2`.
  [#3448](https://github.com/cypress-io/cypress/pull/3448).
- Upgraded `ssl-root-cas` from `1.2.5` to `1.3.1`.
  [#3449](https://github.com/cypress-io/cypress/pull/3449).
- Upgraded `supports-color` from `5.1.0` to `5.5.0`.
  [#3464](https://github.com/cypress-io/cypress/pull/3464).
- Upgraded `through` from `2.3.6` to `2.3.8`.
  [#3465](https://github.com/cypress-io/cypress/pull/3465).
- Upgraded `tmp` from `0.0.31` to `0.0.33`.
  [#3466](https://github.com/cypress-io/cypress/pull/3466).
- Upgraded `tough-cookie` from `2.4.3` to `3.0.1`.
  [#3477](https://github.com/cypress-io/cypress/pull/3477) and
  [#3659](https://github.com/cypress-io/cypress/pull/3659).
- Upgraded `trash` from `4.0.0` to `4.3.0`.
  [#3478](https://github.com/cypress-io/cypress/pull/3478).
- Upgraded `underscore.string` from `3.3.4` to `3.3.5`.
  [#3480](https://github.com/cypress-io/cypress/pull/3480).
- Upgraded `yauzl` from `2.8.0` to `2.10.0`.
  [#3481](https://github.com/cypress-io/cypress/pull/3481). Potentially fixes
  [#3515](https://github.com/cypress-io/cypress/issues/3515).
- We also updated many dependencies used for development and removed some unused
  dependencies.

## 3.1.5

_Released 01/30/2019_

**Bugfixes:**

- Fixed issue where the `onLoad` event was never being called when calling
  [cy.visit()](/api/commands/visit) on the url Cypress is currently navigated
  to. Fixes [#1311](https://github.com/cypress-io/cypress/issues/1311).
- Fixed regression introduced in [3.1.4](#3-1-4) that caused an `InvalidStateError` when
  visiting a page with an XHR request with a `responseType` other than `text` or
  `''`. Fixes [#3008](https://github.com/cypress-io/cypress/issues/3008).
- Fixed several issues in Chrome\* versions `>=72` in the Cypress proxy that
  caused using `cy.visit()` with `localhost` to fail, or using `localhost`
  inside of the `baseUrl` configuration option. Fixes
  [#1872](https://github.com/cypress-io/cypress/issues/1872) and
  [#3252](https://github.com/cypress-io/cypress/issues/3252) and
  [#1777](https://github.com/cypress-io/cypress/issues/1777).
- Fixed another issue in Chrome\* versions `>=72` where a scrollable command log
  would cause the entire application to be scrollable. Fixes
  [#3253](https://github.com/cypress-io/cypress/issues/3253).
- Fixed not correctly passing the `timeout` option for
  [cy.request()](/api/commands/request). This should fix some instances where
  large `timeout` values would cause `ESOCKETTIMEDOUT` errors. Fixes
  [#2669](https://github.com/cypress-io/cypress/issues/2669).
- Fixed issue where Cypress would inject a script tag before the `<!DOCTYPE>`
  declaration when the document only contained the doctype declaration. Fixes
  [#2617](https://github.com/cypress-io/cypress/issues/2617).
- The error message when visiting a site with an invalid content-type now prints
  the correct content-type of the response Cypress received from the web server.
  Fixes [#3101](https://github.com/cypress-io/cypress/issues/3101).
- Fixed issue where an internal `layout.html` file would inadvertently get
  loaded instead of the spec file. Fixes
  [#2891](https://github.com/cypress-io/cypress/issues/2891).
- Fixed issue where the Chromium browser was not detected in Linux due to
  Cypress not distinguishing between Chrome and Chromium browsers with the same
  version. Fixes [#1400](https://github.com/cypress-io/cypress/issues/1400).
- Fixed issue of Cypress being unable to play videos with `autoplay`. We now
  pass the `--no-user-gesture-required` command line switch to Chrome. Fixes
  [#2376](https://github.com/cypress-io/cypress/issues/2376).
- We now pass the Chromium command line switches
  `--use-fake-ui-for-media-stream` and `--use-fake-device-for-media-stream` to
  Chrome by default in order to better support testing webcam functionality.
  Fixes [#2704](https://github.com/cypress-io/cypress/issues/2704).
- Updated filenames allowed for screenshots to allow more characters that are
  valid. Fixes [#3052](https://github.com/cypress-io/cypress/issues/3052).
- Fixed TypeScript error caused by `dtslint` dependency introduced in [3.1.4](#3-1-4).
  Fixes [#3024](https://github.com/cypress-io/cypress/issues/3024) and
  [#3136](https://github.com/cypress-io/cypress/issues/3136).
- Improved error message displayed for `cypress cache` to not display
  `[object Object]` and made `--help` labels more descriptive. Fixes
  [#2589](https://github.com/cypress-io/cypress/issues/2589).
- Using [.clear()](/api/commands/clear) on inputs of type 'date' is now working.
  Fixes [#2738](https://github.com/cypress-io/cypress/issues/2738)
- Fixed issue where `event` was undefined when using an `onload` event handler.
  Fixed [#2859](https://github.com/cypress-io/cypress/issues/2859)

**Misc:**

- Improved errors shown when opening a project in the Desktop Application. The
  design is more readable and the error's stack trace is now expandable.
  Addresses [#2955](https://github.com/cypress-io/cypress/issues/2955).
- Improved experience of search in Desktop Application when there are no
  results. Addresses [#3146](https://github.com/cypress-io/cypress/issues/3146).
- Updated tooltip content so that it no longer flows outside of the tooltip in
  the Test Runner when displaying longer routes. Fixes
  [#2980](https://github.com/cypress-io/cypress/issues/2980).
- Added word labels beside icons in Desktop Application for 'Support' and 'Docs'
  links. Addresses [#3091](https://github.com/cypress-io/cypress/issues/3091).
- Updated the CLI to no longer silence important stdout from `cypress version`,
  `cypress cache list` etc commands. Addresses
  [#2705](https://github.com/cypress-io/cypress/issues/2705).
- Fixed incorrect type definition for options usage for
  [.then()](/api/commands/then). Addresses
  [#3075](https://github.com/cypress-io/cypress/issues/3075).
- Fixed incorrect JSDoc comments in type definition for
  [.focus()](/api/commands/focus) and better formatted comments in type
  definitions. Addresses
  [#2975](https://github.com/cypress-io/cypress/issues/2975) and
  [#2954](https://github.com/cypress-io/cypress/issues/2954).
- Updated error messages to include single quotes when displaying written test
  code. Addresses [#2684](https://github.com/cypress-io/cypress/issues/2684)

**Documentation Changes:**

- Added example on how to use a fake video for webcam testing to
  [Browser API doc](/api/node-events/browser-launch-api#Use-fake-video-for-webcam-testing).

**Dependency Updates**

- We've begun automating our dependency update process in order to avoid
  accidental dependency updates. Addresses
  [#2990](https://github.com/cypress-io/cypress/issues/2990) and
  [#3025](https://github.com/cypress-io/cypress/issues/3025).
- Upgraded `sinon` from `3.2.0` to `3.3.0`. Addresses
  [#1328](https://github.com/cypress-io/cypress/issues/1328).

## 3.1.4

_Released 12/25/2018_

Merry Christmas everyone!

**Bugfixes:**

- Fixed a very longstanding (!) issue where [.click()](/api/commands/click)
  would fail to click the center coordinates of elements with style
  `display: inline`. Cypress would instead report that the element was being
  covered causing the error:
  `cy.click() failed because this element is being covered by another element`.
  Fixes [#210](https://github.com/cypress-io/cypress/issues/210).
- We now no longer abort XHR's which have their `.abort()` method called but are
  already complete. This fixes an edge case where complete XHR's were having
  their `disposer` function called in frameworks like `rxJS` which lead to
  Cypress accidentally re-aborting the XHR's after they were complete. Fixes
  [#761](https://github.com/cypress-io/cypress/issues/761).
- Fixed issues involving XHRs displaying as 'aborted' in the Cypress Command Log
  when they were not actually aborted. Fixes
  [#1652](https://github.com/cypress-io/cypress/issues/1652).
- We no longer abort XHR request during the page's `unload` event and allow the
  browser to handle natively calling abort. Fixes
  [#2968](https://github.com/cypress-io/cypress/issues/2968).
- Fixed an issue where Cypress's `devDependencies` were being included in the
  Windows binary. Fixes
  [#2896](https://github.com/cypress-io/cypress/issues/2896).
- Fixed issue where XHR's `onreadystatechange` was not receiving the proper
  event arguments. Fixes
  [#2925](https://github.com/cypress-io/cypress/issues/2925).
- We now properly strip leading paths of files on uncaught errors from Windows
  OS. Fixes [#2936](https://github.com/cypress-io/cypress/issues/2936).

**Misc:**

- Removed the word 'already' from the Cypress install message in order to be
  less confusing. Addresses
  [#2754](https://github.com/cypress-io/cypress/issues/2754).
- Fixed incomplete type definitions for [cy.request](/api/commands/request).
  Fixes [#2305](https://github.com/cypress-io/cypress/issues/2305).

**Dependency Updates**

- Upgraded `commit-info` from `2.0.0` to `2.1.1`. Fixes
  [#2848](https://github.com/cypress-io/cypress/issues/2848).
- Upgraded `lodash` from `4.17.10` to `4.17.11`. Fixes
  [#2929](https://github.com/cypress-io/cypress/issues/2929).

## 3.1.3

_Released 12/03/2018_

**Bugfixes:**

- Fixed regression introduced in [3.1.1](#3-1-1)
  with `requestAnimationFrame` that caused some animations not to run. Fixes
  [#2725](https://github.com/cypress-io/cypress/issues/2725).
- Fixed regression introduced in [3.1.2](#3-1-2)
  that caused DOM elements passed to [cy.wrap()](/api/commands/wrap) to no
  longer yield the proper jQuery array instance. Fixes
  [#2820](https://github.com/cypress-io/cypress/issues/2820).
- Fixed regression causing invocations of [`cy.clock()`](/api/commands/clock) to
  error on subsequent tests. Fixes
  [#2850](https://github.com/cypress-io/cypress/issues/2850).
- Fixed issue where a fix included in
  [3.1.2](#3-1-2) did not pass the `windowsHide`
  argument to the proper options. Fixes
  [#2667](https://github.com/cypress-io/cypress/issues/2667) and
  [#2809](https://github.com/cypress-io/cypress/issues/2809).
- Passing [`.check({ force: true })`](/api/commands/check) no longer requires
  the checkbox or radio to be visible. Fixes
  [#1376](https://github.com/cypress-io/cypress/issues/1376).

**Misc**

- Updated types to support promises as arguments within
  [cy.wrap](/api/commands/wrap). Fixes
  [#2807](https://github.com/cypress-io/cypress/pull/2807).
- We now expose all jQuery methods and values onto
  [`Cypress.$`](/api/utilities/$). Fixes
  [#2830](https://github.com/cypress-io/cypress/issues/2830).
- [cy.wait()](/api/commands/wait) now accepts a separate timeout option for
  `requestTimeout` and `responseTimeout`. Fixes
  [#2446](https://github.com/cypress-io/cypress/issues/2446).

**Documentation Changes:**

- Added `requestTimeout` and `responseTimeout` options to
  [cy.wait()](/api/commands/wait)
- Added 'History' table to [cy.wait()](/api/commands/wait)
- Added 'Alias' for assertions that are aliases of each other to
  [Assertions](/app/references/assertions)

**Dependency Updates**

- Upgraded `nodemon` from `^1.8.1` to `^1.8.7`. Fixes
  [#2864](https://github.com/cypress-io/cypress/pull/2864).
- Upgraded `request` from `^2.27.0` and `^2.28.0` to `^4.0.0`, Fixes
  [#2455](https://github.com/cypress-io/cypress/issues/2455).

## 3.1.2

_Released 11/18/2018_

**Bugfixes:**

- Fixed a regression caused in [3.1.1](#3-1-1) where we attempted to set a property on
  an invalid cookie sent from a server. Fixes
  [#2724](https://github.com/cypress-io/cypress/issues/2724).
- Fixed Cypress not correctly aborting long running connections (such as server
  sent events) on proxied requests. Fixes
  [#2612](https://github.com/cypress-io/cypress/issues/2612).
- Fixed bug where tests were failing due to assertions causing Cypress to
  accidentally iterate through cross-origin iframes. If you were seeing "random"
  cross-origin errors, this likely fixes those issues. Fixes
  [#2784](https://github.com/cypress-io/cypress/issues/2784).
- Fixed incorrectly setting `charCode` and `keyCode` when using
  [`.type()`](/api/commands/type) on a few different special characters such as
  `{`. Fixes [#2105](https://github.com/cypress-io/cypress/issues/2105).
- Fixed another regression in [3.1.1](#3-1-1) where passing `undefined` to a
  `setTimeout` caused Cypress to error. Fixes
  [#2719](https://github.com/cypress-io/cypress/issues/2719).
- Fixed a bug in node core where Cypress would not show up in `Windows` for
  users on node `>=11`. Fixes
  [#2667](https://github.com/cypress-io/cypress/issues/2667).
- Fixed a bug with trashing assets in linux that caused recursive `.Trash` files
  to show up. We now have opted to actually `rm -rf` the files in linux because
  trashing is too inconsistent between linux distros. Fixes
  [#2742](https://github.com/cypress-io/cypress/issues/2742).

**Misc**

- Added type definitions for `Cypress.moment()`. Fixes
  [#2746](https://github.com/cypress-io/cypress/issues/2746).
- We now display better error messages in the CLI when runs exceed billing
  limits. Fixes [#1689](https://github.com/cypress-io/cypress/issues/1689).

**Dependency Updates**

- Removed `progress` [#2733](https://github.com/cypress-io/cypress/issues/2733).

## 3.1.1

_Released 11/02/2018_

**Features:**

- You can now pass a `flag` option to [cy.writeFile()](/api/commands/writefile).
  The [following flags](https://nodejs.org/api/fs.html#fs_file_system_flags) are
  available. Fixes [#1249](https://github.com/cypress-io/cypress/issues/1249).
- There is a new
  [CYPRESS_DOWNLOAD_MIRROR](/app/references/advanced-installation#Mirroring)
  environment variable for installing Cypress at a mirror url. Fixes
  [#2609](https://github.com/cypress-io/cypress/pull/2609).
- The [Module API](/app/references/module-api) now returns the `runUrl` from
  `cypress.run()`. Fixes
  [#2596](https://github.com/cypress-io/cypress/issues/2596).
- Specs now properly display as focused when navigating through specs via the
  keyboard. Fixes [#2273](https://github.com/cypress-io/cypress/pull/2273).
- Tasks registered in the plugins file with the 'task' event are merged with any
  tasks registered by previous calls to `on('task')`, instead of overwriting the
  previous tasks. Fixes
  [#2284](https://github.com/cypress-io/cypress/issues/2284).

**Bugfixes:**

- Fixed a bug where Cypress would error when a secure cookie flag was set and
  then expired from an HTTPS url without the subsequent secure flag. Due to the
  way Cypress was constructing the url, this would fail to actually remove the
  cookie. Fixes [#1264](https://github.com/cypress-io/cypress/issues/1264),
  [#1321](https://github.com/cypress-io/cypress/issues/1321),
  [#1799](https://github.com/cypress-io/cypress/issues/1799).
- We now truncate filenames for screenshots to not exceed 255 characters in
  length. Previously there were cases where the screenshot filename would exceed
  255 characters and error. Fixes
  [#2403](https://github.com/cypress-io/cypress/issues/2403) and
  [#2665](https://github.com/cypress-io/cypress/issues/2665).
- Fixed issue when using [cy.writeFile()](/api/commands/writefile) and passing
  an object to a `.json` file. The object is now correctly written to the JSON
  file instead of a string. Fixes
  [#2373](https://github.com/cypress-io/cypress/pull/2373).
- We updated how we handle
  [trashAssetsBeforeRuns](/app/references/configuration#Screenshots)
  behavior. We now trash the contents of the
  `screenshotsFolder` and
  `videosFolder` directories
  instead of trashing the directories themselves. This helps maintain any file
  access permissions for the directories. Fixes
  [#1943](https://github.com/cypress-io/cypress/issues/1943) and
  [#2600](https://github.com/cypress-io/cypress/issues/2600).
- Fixed bug where mocked Dates using [cy.clock()](/api/commands/clock) would not
  be an instance of `Date`. Fixes
  [#2570](https://github.com/cypress-io/cypress/issues/2570).
- Directories within specs whose names contain `.` are now correctly read as
  directories instead of spec files within the Test Runner. Fixes
  [#2423](https://github.com/cypress-io/cypress/issues/2423).
- Cypress no longer automatically takes screenshots of skipped tests. Fixes
  [#2368](https://github.com/cypress-io/cypress/issues/2368).
- Fixed an issue where returning/resolving `undefined` from a
  [cy.task()](/api/commands/task) handler resulted in an incorrect runtime
  error. Fixes [#2553](https://github.com/cypress-io/cypress/issues/2553).
- Update
  [modifyObstructiveCode](/app/references/configuration#modifyObstructiveCode)
  to account for framebusting techniques that use `window.frameElement`, so that
  Applications using this technique will run properly in Cypress. Fixes
  [#2582](https://github.com/cypress-io/cypress/issues/2582).
- Fixed bug where only the first DOM element of an array of DOM elements would
  be blacked out after being passed as argument to `blackout` within
  [cy.screenshot()](/api/commands/screenshot). Fixes
  [#2508](https://github.com/cypress-io/cypress/issues/2508).
- We fixed an issue involving timers after running
  [cy.screenshot()](/api/commands/screenshot). Fixes
  [#2432](https://github.com/cypress-io/cypress/issues/2432).
- The Test Runner now retries node-originated errors from our internal API
  requests. Fixes [#2341](https://github.com/cypress-io/cypress/issues/2341)
- Fixed issue with multiple `readyStateChanges` with the same `readyState`.
  Fixes [#1150](https://github.com/cypress-io/cypress/issues/1150).
- Fixed Type error being thrown for users using TypeScript 3. Fixes
  [#2363](https://github.com/cypress-io/cypress/issues/2363).

**Misc**

- We are now collecting more environment variables from runs when run in
  Semaphore, GitLab, Bitbucket, Team Foundation Server, Codeship, and Shippable.
  Fixes [#2460](https://github.com/cypress-io/cypress/issues/2460),
  [#2358](https://github.com/cypress-io/cypress/issues/2358),
  [#2343](https://github.com/cypress-io/cypress/issues/2343), and
  [#2453](https://github.com/cypress-io/cypress/issues/2453).
- The Test Runner's search now resets when switching between projects. Fixes
  [#2512](https://github.com/cypress-io/cypress/issues/2512).
- Fixed internal Cypress tests. Fixes
  [#2606](https://github.com/cypress-io/cypress/issues/2606).
- Replaced use of `new Buffer` with `Buffer.from`. Fixes
  [#2626](https://github.com/cypress-io/cypress/issues/2626).
- Allowed `autoScrollingEnabled` to be saved in `state.json`. Fixes
  [#2476](https://github.com/cypress-io/cypress/issues/2476).
- Fixed internal test error `beforeSpecRun is not a function`. Fixes
  [#2401](https://github.com/cypress-io/cypress/issues/2401).
- Switched our internal tests to use CircleCI workspaces. Fixes
  [#2398](https://github.com/cypress-io/cypress/issues/2398).
- Update TypeScript definition for [cy.screenshot()](/api/commands/screenshot)
  to include screenshot specific options. Fixes
  [#2654](https://github.com/cypress-io/cypress/issues/2654).
- URLs printed within the CLI will now display as the color blue. Fixes
  [#2493](https://github.com/cypress-io/cypress/issues/2493).
- We began bulk converting some of our codebase from CoffeeScript to JavaScript.
  Fixes [#2686](https://github.com/cypress-io/cypress/issues/2686) and
  [#2687](https://github.com/cypress-io/cypress/issues/2687).
- We updated some of our internal ESLint rules to be more strict and also to
  help with CoffeeScript to JavaScript conversions. Fixes
  [#2688](https://github.com/cypress-io/cypress/issues/2688).

**Documentation Changes:**

- Added `flag` option to [`cy.writeFile()` doc](/api/commands/writefile).
- Added `runUrl` to returned run in [Module API doc](/app/references/module-api).
- Documented new `CYPRESS_DOWNLOAD_MIRROR` flag and rewrote advanced install
  instructions to be clearer in
  [Installing Cypress doc](/app/references/advanced-installation).

**Dependency Updates**

- Upgraded `common-tags` from `^1.4.0` to `^1.8.0`
  [#2415](https://github.com/cypress-io/cypress/pull/2415)
- Upgraded `@cypress/browserify-preprocessor` from `1.1.0` to `1.1.1`
  [#2513](https://github.com/cypress-io/cypress/issues/2513)
- Upgraded `lolex` from `^1.5.2` to `^3.0.0`
  [#2570](https://github.com/cypress-io/cypress/issues/2570)
  {/* textlint-disable */}
- Upgraded `@types/jquery` from `3.2.16` to `3.3.6`
  [#2363](https://github.com/cypress-io/cypress/issues/2363)
  {/* textlint-disable */}
- Upgraded `zunder` from `5.6.5` to `6.1.1`
  [#2541](https://github.com/cypress-io/cypress/issues/2541)

## 3.1.0

_Released 08/13/2018_

**Summary:**

- Cypress can now run tests in parallel across multiple virtual machines, or can
  be parallelized on a single machine. Cypress will automatically figure out,
  detect, and load balance all of your specs in the fastest and most efficient
  way possible. There is no configuration other than passing a `--parallel` flag
  and spinning up multiple machines on your CI provider. From our experiments
  you can expect to see approximately 40% reduction in overall run time **per
  machine** you add. However, attempting to run in parallel on a single machine
  requires server grade hardware with dozens (or even hundreds) of CPU's and GB
  of RAM to run efficiently. A much better and simpler approach is to use a
  cluster of Docker containers that are all isolated from each other. Any
  standard CI service (CircleCI, TravisCI, etc) comes with the ability to do
  this. We automatically tap into their environment variables to make
  parallelization possible without you having to configure anything.
- Beyond parallelization, you now have the ability to group multiple runs with
  each other so that they show up together (grouped) in the Dashboard. This
  enables you to test different applications, groups of specs, or different
  environments (like development, staging, production) and see all of the
  results together. We know how important cross browser testing is to everyone,
  so we built this to lead directly into aggregating the results of multiple
  browsers into a single run.
- The Dashboard Service has been updated to show you more visual information
  about what happened during a run. You can see how specs were parallelized and
  you can calculate the effect of adding or removing machines to help reduce the
  overall run time.

**Features:**

- `cypress run` accepts a new
  [--parallel](/app/references/command-line#cypress-run-parallel) flag to run
  specs in parallel. Fixes
  [#1690](https://github.com/cypress-io/cypress/issues/1690) and
  [#64](https://github.com/cypress-io/cypress/issues/64) and
  [#2297](https://github.com/cypress-io/cypress/issues/2297).
- `cypress run` accepts a new
  [--group](/app/references/command-line#cypress-run-group-lt-name-gt) flag to
  group multiple spec files within a single run. Fixes
  [#2169](https://github.com/cypress-io/cypress/issues/2169)
- `cypress run` accepts a new
  [`--ci-build-id`](/app/references/command-line#cypress-run-ci-build-id-lt-id-gt)
  flag. Fixes [#2153](https://github.com/cypress-io/cypress/issues/2153).

**Bugfixes:**

- We've finally tracked down the source of specs "hanging" and failing to start
  when running Electron. We finally tracked it down to a bug in Electron itself
  with setting `menu` when using offscreen rendering. Fixes
  [#2322](https://github.com/cypress-io/cypress/issues/2322) and
  [#2294](https://github.com/cypress-io/cypress/issues/2294) and
  [#1235](https://github.com/cypress-io/cypress/issues/1235) and
  [#1333](https://github.com/cypress-io/cypress/issues/1333).
- Clicking on svg elements is now working. [3.0.2](#3-0-2) introduced a bug that would
  throw an 'illegal invocation' error. Fixes
  [#2245](https://github.com/cypress-io/cypress/issues/2245) and
  [#2252](https://github.com/cypress-io/cypress/issues/2252) and
  [#2258](https://github.com/cypress-io/cypress/issues/2258) and
  [#2277](https://github.com/cypress-io/cypress/issues/2277) and
  [#2288](https://github.com/cypress-io/cypress/issues/2288).
- Fixed a regression in [3.0.2](#3-0-2) that caused typing `{enter}` not to submit a
  form when there were `<button>` elements other than `type='submit'`. Fixes
  [#2261](https://github.com/cypress-io/cypress/issues/2261) and
  [#2326](https://github.com/cypress-io/cypress/issues/2326).
- Fixed a small visual bug where failed commands were not aligned to other
  commands. Fixes [#2314](https://github.com/cypress-io/cypress/issues/2314).
- Fixes a race condition where async electron browser commands came in after the
  renderer had been destroyed, causing failures. Fixes
  [#2321](https://github.com/cypress-io/cypress/issues/2321).

**Misc**

- When recording to the Dashboard Service, we now provide estimated durations
  per spec directly within the standard output, as long as the spec has had
  enough run history for this to be determined. Fixes
  [#2276](https://github.com/cypress-io/cypress/issues/2276).
- When using the new
  [--parallel](/app/references/command-line#cypress-run-parallel) or
  [--group](/app/references/command-line#cypress-run-group-lt-name-gt) feature,
  we now visually indicate that to you in the standard output when recording.
  Fixes [#2275](https://github.com/cypress-io/cypress/issues/2275).
- We have added support for more CI providers to automatically detect and show
  more relevant information in the Dashboard, instead of showing 'Unknown'.
  Fixes [#2146](https://github.com/cypress-io/cypress/issues/2146).
- We have added better checks and reliability for detecting runs in Jenkins.
  Fixes [#1990](https://github.com/cypress-io/cypress/issues/1990).
- The built in
  [`cypress-browserify-preprocessor`](https://github.com/cypress-io/cypress-browserify-preprocessor)
  was bumped to `1.1.0`. This supports more JavaScript features by default,
  including async/await, object rest spread, and class properties. Fixes
  [#2254](https://github.com/cypress-io/cypress/issues/2254).
- [cypress run](/app/references/command-line#cypress-run) now creates a new
  browser profile per run per browser, but keeps the same browser profile when
  run via [cypress open](/app/references/command-line#cypress-open). This means
  you can run Cypress locally over multiple processes and the browser profiles
  will not conflict with each other. Fixes
  [#1566](https://github.com/cypress-io/cypress/issues/1566).
- The Desktop-GUI has been updated to get the new routes provided by the Cypress
  API for runs. Fixes
  [#2189](https://github.com/cypress-io/cypress/issues/2189).
- Cypress now retries multiple times (with a backoff strategy) when
  communicating with our API fails while recording runs. This will provide
  better feedback in situations when the API is temporarily unavailable. Fixes
  [#1590](https://github.com/cypress-io/cypress/issues/1590).
- When Cypress retries due to an API timeout or failure it now displays a very
  nice message indicating to you the delay and number of retries left. Fixes
  [#2280](https://github.com/cypress-io/cypress/issues/2280).
- We've added parallelization to our own internal tests for the driver and the
  desktop-gui. We've been able to reduce the number of concurrent instances our
  tests use by 4, and shaved about 6 minutes off of each build. Faster with less
  resources. Fixes [#2325](https://github.com/cypress-io/cypress/issues/2325).

**Documentation Changes:**

- [Added `Parallelization` doc.](/cloud/features/smart-orchestration/parallelization)
- [Update `Dashboard Service` doc with new screenshots and run sections.](/cloud/get-started/introduction)
- [Update `Command Line` doc with new flags and alphabetized flags.](/app/references/command-line)

## 3.0.3

_Released 07/30/2018_

**Bugfixes:**

- Reverted the Chrome argument that disabled `RootLayerScrolling` which was used
  to prevent the application under test from "shaking" due to a bug in versions
  66 and 67. This workaround inadvertently created a different and much more
  severe bug in Chrome 68 that would miscalculate pointer coordinates. This led
  to Cypress giving confusing errors about elements being covered up on action.
  This is still a bug in Chrome, and is fixed in Canary but has not yet been
  released to the stable Chrome 68 channel. Nevertheless, removing the
  `RootLayerScrolling` flag does fix it. We did several experiments to try to
  ensure that the "shaking" behavior does not exhibit itself in Chrome 68. We
  have limited the `--disable-blink-features=RootLayerScrolling` flag to Chrome
  66 and Chrome 67. Fixes
  [#2223](https://github.com/cypress-io/cypress/issues/2223) and
  [#2215](https://github.com/cypress-io/cypress/issues/2215) and
  [#2037](https://github.com/cypress-io/cypress/issues/2037).
- Fixed another bug with Chrome that caused the `chromeWebSecurity: false`
  option to not be respected. This was due to Chrome progressively rolling out
  trials of a new option that attempts to isolate sites (and iframes) in their
  own child process if their origins are different. Fixes
  [#1951](https://github.com/cypress-io/cypress/issues/1951) and
  [#2001](https://github.com/cypress-io/cypress/issues/2001) and
  [#715](https://github.com/cypress-io/cypress/issues/715).
- Fixed Cypress hanging in CI due to excessive and unnecessary globbing. We
  finally tracked down this issue which made it appear as if Cypress was
  "hanging" after closing a spec file and then attempting to open the next one.
  Fixes [#2183](https://github.com/cypress-io/cypress/issues/2183) and
  [#1905](https://github.com/cypress-io/cypress/issues/1905) and
  [#1912](https://github.com/cypress-io/cypress/issues/1912).
- We are now properly serializing nested object arguments when using the
  [Module API](/app/references/module-api) via `cypress.open()` or
  `cypress.run()`. Passing nested objects in `reporterOptions` now works
  correctly. This is especially useful when using `mocha-multi-reporters`. In
  addition to fixing the [Module API](/app/references/module-api), we are now
  also properly handling nested arguments from the
  [Command Line](/app/references/command-line). In order to pass nested objects
  within CLI params you must pass stringified JSON. This is useful for
  properties such as `blacklistHosts`. Fixes
  [#1348](https://github.com/cypress-io/cypress/issues/1348) and
  [#1357](https://github.com/cypress-io/cypress/issues/1357) and
  [#2221](https://github.com/cypress-io/cypress/issues/2221).
- Fixed a bug causing screenshots saved via
  [cy.screenshot()](/api/commands/screenshot) to be in different folders when
  you ran using [cypress open](/app/references/command-line#cypress-open) vs
  [cypress run](/app/references/command-line#cypress-run) . Fixes
  [#2091](https://github.com/cypress-io/cypress/issues/2091).
- Fixed bugs with Electron losing focus when running headlessly via
  [cypress run](/app/references/command-line#cypress-run) after navigation. Now
  the browser will always act as if it is focused no matter what and in all
  situations when running headlessly. If you were seeing focus related problems
  when running headlessly, this should fix them. Fixes issue
  [#2190](https://github.com/cypress-io/cypress/issues/2190).
- Fixed using when using [cy.click()](/api/commands/click) on an element that
  bound to the `focus` event while the browser was currently _out of focus_. We
  have now normalized **all focus and blur events** to behave the same as if the
  browser is always in focus. This should fix the other batch of `blur` and
  `focus` issues that users have been experiencing. Fixes
  [#549](https://github.com/cypress-io/cypress/issues/549) and
  [#2198](https://github.com/cypress-io/cypress/issues/2198).
- Fixed the vast majority of known issues with [.type()](/api/commands/type).
  Fixes [#1241](https://github.com/cypress-io/cypress/issues/1241).
- Using [.type()](/api/commands/type) on an input of type `email` or `number`
  will no longer fire unnecessary additional `blur` and `focus` events. Fixes
  [#2210](https://github.com/cypress-io/cypress/issues/2210).
- Fixed [.type()](/api/commands/type) breaking on chains when passing the same
  `options` references. Fixes
  [#365](https://github.com/cypress-io/cypress/issues/365).
- Fixed an issue with [.clear()](/api/commands/clear) not behaving the same as
  `cy.type('{selectall}{backspace}')`. Fixes
  [#420](https://github.com/cypress-io/cypress/issues/420).
- Fixed a bug with issuing an additional `blur` and `click` event when chaining
  `.clear().type(...)`. Fixes
  [#593](https://github.com/cypress-io/cypress/issues/593).
- Fixed many issues with typing into `[contenteditable]` elements. WYSIWYG,
  [Draft.js](https://draftjs.org/) based, and other HTML editors now work
  correctly. Fixes [#596](https://github.com/cypress-io/cypress/issues/596) and
  [#1686](https://github.com/cypress-io/cypress/issues/1686) and
  [#2096](https://github.com/cypress-io/cypress/issues/2096).
- The caret now correctly moves on `[contenteditable]` elements. Fixes
  [#1108](https://github.com/cypress-io/cypress/issues/1108).
- Fixed [.type()](/api/commands/type) inserting a rogue `<br>` tag after the
  first letter in `[contenteditable]` elements. Fixes
  [#1926](https://github.com/cypress-io/cypress/issues/1926).
- Fixed issue where change events with [.type()](/api/commands/type) would not
  fire correctly for many more situations and edge cases. Fixes
  [#651](https://github.com/cypress-io/cypress/issues/651).
- Fixed issues with typing into JS based text-mask plugins. Basically anything
  that would alter the `.value` in response to certain events now works
  correctly. Fixes [#940](https://github.com/cypress-io/cypress/issues/940) and
  [#1684](https://github.com/cypress-io/cypress/issues/1684).
- Using [.clear()](/api/commands/clear) on an input with a `maxlength` attribute
  now works. Fixes [#1002](https://github.com/cypress-io/cypress/issues/1002)
  and [#2056](https://github.com/cypress-io/cypress/issues/2056).
- Fixed issues with [.type()](/api/commands/type) not firing the `change` event
  on `input[type=number]`. Fixes
  [#1171](https://github.com/cypress-io/cypress/issues/1171).
- Fixed other event related issues with [.type()](/api/commands/type) that were
  not firing correctly. Fixes
  [#1209](https://github.com/cypress-io/cypress/issues/1209).
- Fixed even more issues with [.type()](/api/commands/type) not inserting
  characters on `input[type=number]`. Fixes
  [#1381](https://github.com/cypress-io/cypress/issues/1381).
- Fixed not being able to type negative numbers into `input[type=number]`
  elements. Fixes [#2173](https://github.com/cypress-io/cypress/issues/2173).
- Fixed `selectionStart` and `selectionEnd` with [.type()](/api/commands/type)
  when using `{leftarrow}` or `{rightarrow}`. Fixes
  [#1234](https://github.com/cypress-io/cypress/issues/1234).
- Fixed not being able to type into a `datetime-local` input. Fixes
  [#1366](https://github.com/cypress-io/cypress/issues/1366).
- Calling [.focus()](/api/commands/focus) or [.blur()](/api/commands/blur) on
  [cy.window()](/api/commands/window) no longer fires blur events on the
  `activeElement` or causes it to become `body`. Fixes
  [#2234](https://github.com/cypress-io/cypress/issues/2234).
- Using `cy.get('body').click()` now correctly changes the `activeElement` back
  to `body` and causes the existing `activeElement` to receive `blur`. Fixes
  [#2236](https://github.com/cypress-io/cypress/issues/2236).

**Misc:**

- We've loosened up the restrictions surrounding what we consider a typeable
  element. You can now type into inputs with invalid `type` attributes because
  the browser does still consider them regular `text` inputs and allows you to
  type into them. Fixes
  [#586](https://github.com/cypress-io/cypress/issues/586).
- Using `{uparrow}` or `{downarrow}` with [.type()](/api/commands/type) on an
  `input[type=number]` element now increments or decrements the number
  configured via the `step` attribute. Fixes
  [#2110](https://github.com/cypress-io/cypress/issues/2110).
- Using `{uparrow}` or `{downarrow}` with [.type()](/api/commands/type) now
  correctly moves the cursor on `textarea` or `[contenteditable]` elements.
  Fixes [#2187](https://github.com/cypress-io/cypress/issues/2187).
- You can now use [.focus()](/api/commands/focus) or
  [.blur()](/api/commands/blur) on `cy.get('body')`. Fixes
  [#2235](https://github.com/cypress-io/cypress/issues/2235).
- Bumped the version in `junit` reporter dep from `1.12.1` to `1.17.0` which
  adds a few new features. Fixes
  [#2238](https://github.com/cypress-io/cypress/issues/2238).
- Bumped deps that `npm audit` was yelling about. Fixes
  [#1701](https://github.com/cypress-io/cypress/issues/1701).
- Runs showing up in the `Runs` tab now more closely match how they display in
  the Dashboard. Fixes
  [#2060](https://github.com/cypress-io/cypress/issues/2060).
- Added more debug logs. Fixes
  [#2108](https://github.com/cypress-io/cypress/issues/2108).
- When recording to the Dashboard we now more accurately collect commit details
  when it is missing from the local `git` data. Fixes
  [#2129](https://github.com/cypress-io/cypress/issues/2129) and
  [#2073](https://github.com/cypress-io/cypress/issues/2073).
- Updated build in example kitchen sink to `1.0.2`. Fixes
  [#2139](https://github.com/cypress-io/cypress/issues/2139).
- Updated the json-schema describing `videoCompression`. Allowing it to be a
  boolean. Fixes [#2140](https://github.com/cypress-io/cypress/issues/2140).

**Documentation Changes:**

- [New "Module API" doc](/app/references/module-api)

## 3.0.2

_Released 06/28/2018_

**Bugfixes:**

- Screenshots taken with [cy.screenshot()](/api/commands/screenshot) on 2x DPI
  are now taken at the correct full size. Fixes
  [#1857](https://github.com/cypress-io/cypress/issues/1857) and
  [#2018](https://github.com/cypress-io/cypress/issues/2018).
- Windows users no longer exit with `EPIPE` errors when running `cypress run` in
  newer versions of Node. Fixes
  [#1841](https://github.com/cypress-io/cypress/issues/1841) and
  [#2044](https://github.com/cypress-io/cypress/issues/2044).
- Fixed issue where applications programmatically stealing focus would lead to
  slow runs in Electron when running via `cypress run`.
  [#1909](https://github.com/cypress-io/cypress/issues/1909) and
  [#1892](https://github.com/cypress-io/cypress/issues/1892).
- Electron no longer reports the browser as out of focus when running via
  `cypress run`. Fixes
  [#1939](https://github.com/cypress-io/cypress/issues/1939).
- Modified the `document.hasFocus()` method to return `true` if the top window
  (Cypress window) is in focus. This should now correctly match how your
  application behaves outside of Cypress. Fixes
  [#1940](https://github.com/cypress-io/cypress/issues/1940).
- Fixed issue where Cypress would unnecessarily scroll when attempting to locate
  elements with `position: sticky`. Fixes
  [#1475](https://github.com/cypress-io/cypress/issues/1475).
- Fixed a bug where changing the
  `integrationFolder` in Windows
  would lead to errors with plugins. Fixes
  [#1704](https://github.com/cypress-io/cypress/issues/1704).
- Cypress no longer crashes when a 3rd party server sends invalid `gzip`
  content. Also fixed issues with incorrectly gunzipping multibyte characters
  which would potentially lead to serving invalid HTML or JS. Fixes
  [#1396](https://github.com/cypress-io/cypress/issues/1396) and
  [#1756](https://github.com/cypress-io/cypress/issues/1756).
- The `--silent` flag should now be respected during `npm install cypress` on
  all OSes. Fixes [#817](https://github.com/cypress-io/cypress/issues/817).
- Corrected a typo in the CLI for a warning message. Fixes
  [#2038](https://github.com/cypress-io/cypress/issues/2038).
- Fixed some areas of the Desktop GUI that did not display path names correctly
  in Windows. Fixes [#1830](https://github.com/cypress-io/cypress/issues/1830).
- The `pluginsFile` now supports an absolute path instead of just a relative
  one. Fixes [#1837](https://github.com/cypress-io/cypress/issues/1837).
- Fixed a regression introduced in `3.x.x` where application code that used
  `setTimeout` with a string argument would see the error
  `fn.apply is not a function`. Fixes
  [#1854](https://github.com/cypress-io/cypress/issues/1854).
- Fixed issue where preprocessor errors were being swallowed. Fixes
  [#1877](https://github.com/cypress-io/cypress/issues/1877).
- Fixed issue where Cypress would hang indefinitely when starting a new spec
  when in `cypress run` mode. Additionally we have optimized the code path to
  not read in the local `state.json` unnecessarily. Fixes
  [#2013](https://github.com/cypress-io/cypress/issues/2013) and
  [#1912](https://github.com/cypress-io/cypress/issues/1912) and
  [#1905](https://github.com/cypress-io/cypress/issues/1905) and
  [#1890](https://github.com/cypress-io/cypress/issues/1890).
- Fixed a couple regressions in the Dashboard where timed out runs stayed
  "Pending" forever. Fixes
  [#1891](https://github.com/cypress-io/cypress/issues/1891) and
  [#1952](https://github.com/cypress-io/cypress/issues/1952).
- Fixed another Dashboard regression where an error would throw when recording
  tests and sending a large list of specs. Fixes
  [#1901](https://github.com/cypress-io/cypress/issues/1901).
- Fixed issue where videos would not be recorded when an object was returned
  from `before:browser:launch` when in the Electron browser. Fixes
  [#1992](https://github.com/cypress-io/cypress/issues/1992).
- Fixed an issue where Cypress would inject content into the `<header>` tag
  instead of the `<head>` tag. Fixes
  [#2026](https://github.com/cypress-io/cypress/issues/2026).
- Fixed an oversight where a specific framebusting check was not being properly
  stripped and removed by the default config option
  [modifyObstructiveCode](/app/references/configuration#Browser). Fixes
  [#2030](https://github.com/cypress-io/cypress/issues/2030) and
  [#2059](https://github.com/cypress-io/cypress/issues/2059).
- Fixed icons visually shifting when tests were running in the Test Runner.
  Fixes [#1983](https://github.com/cypress-io/cypress/issues/1983).
- Server sent events now _finally_ work correctly in Cypress. Fixes
  [#1440](https://github.com/cypress-io/cypress/issues/1440) and
  [#1111](https://github.com/cypress-io/cypress/issues/1111).
- Time traveling snapshots now preserve the styles of empty `<style>` tags with
  programmatically inserted CSS rules. Fixes
  [#1226](https://github.com/cypress-io/cypress/issues/1226).

**Misc:**

- There are now several new CLI commands for interacting with the binary cache:
  [cypress cache path](/app/references/command-line#cypress-cache-path),
  [cypress cache list](/app/references/command-line#cypress-cache-list), and
  [cypress cache clear](/app/references/command-line#cypress-cache-clear). Fixes
  [#1856](https://github.com/cypress-io/cypress/issues/1856).
- We've added a new CLI flag: `--no-exit` for
  [cypress run](/app/references/command-line#cypress-run) to keep the browser
  open after the tests finish running. Fixes
  [#1871](https://github.com/cypress-io/cypress/issues/1871).
- The [CLI](/app/references/command-line) now respects config values and
  environment variables put in your `.npmrc` file. Fixes
  [#1399](https://github.com/cypress-io/cypress/issues/1399) and
  [#1853](https://github.com/cypress-io/cypress/issues/1853).
- Significantly improved the performance of taking screenshots.
  [#1863](https://github.com/cypress-io/cypress/issues/1863).
- Node module dependencies updated. Fixes
  [#1674](https://github.com/cypress-io/cypress/issues/1674) and
  [#1942](https://github.com/cypress-io/cypress/issues/1942).
- The bundled version of FFmpeg has now been bumped from `3.x.x` to `4.x.x`.
  This may help with some issues users were experiencing when recording videos.
  Fixes [#1972](https://github.com/cypress-io/cypress/issues/1972).
- Added more debug logs to FFmpeg to determine why FFmpeg compression sometimes
  causes Cypress to crash (mostly while running in Travis CI). Fixes
  [#1971](https://github.com/cypress-io/cypress/issues/1971).
- Several improvements to TypeScript typings. Fixes
  [#1881](https://github.com/cypress-io/cypress/issues/1881) and
  [#2007](https://github.com/cypress-io/cypress/issues/2007) and
  [#1899](https://github.com/cypress-io/cypress/issues/1899) and
  [#1902](https://github.com/cypress-io/cypress/issues/1902) and
  [#1897](https://github.com/cypress-io/cypress/issues/1897) and
  [#1907](https://github.com/cypress-io/cypress/issues/1907).
- We improved error logging and the user experience around
  [cypress verify](/app/references/command-line#cypress-verify). Fixes
  [#1984](https://github.com/cypress-io/cypress/issues/1984).
- We no longer log the `skipping install` message if the Cypress binary is
  already installed locally. Fixes
  [#1985](https://github.com/cypress-io/cypress/issues/1985).
- Now, by default, screenshots are nested within a folder with the name of **the
  spec file** that is currently running. Example - the spec named
  `cypress/integration/foo/bar_spec.js` will save screenshots inside of this
  directory: `cypress/screenshots/foo/bar_spec.js/*`. Fixes
  [#1826](https://github.com/cypress-io/cypress/issues/1826).
- Passing `foo/bar/baz` as the fileName arg to
  [cy.screenshot()](/api/commands/screenshot#Take-a-screenshot-and-save-in-a-specific-directory)
  inside a spec, `app.spec.js`, will now result in the screenshot being saved to
  a nested folder path such as:
  `cypress/screenshots/app.spec.js/foo/bar/baz.png`. Fixes
  [#1771](https://github.com/cypress-io/cypress/issues/1771) and
  [#668](https://github.com/cypress-io/cypress/issues/668).
- We now append `(failed)` to the screenshot filename of screenshots taken
  automatically during test failure. Fixes
  [#1923](https://github.com/cypress-io/cypress/issues/1923).
- If multiple screenshots are taken during a test that will result in the same
  filename, their file paths are now appended with a number, i.e.
  `test name (1).png`. This prevents screenshot files with the same name from
  being overwritten. Fixes
  [#1766](https://github.com/cypress-io/cypress/issues/1766).
- Screenshot `onAfterScreenshot` and `onBeforeScreenshot` callbacks ar enow
  invoked for failed tests. They include a `testFailure` property to distinguish
  between automatic ones and your own use of `cy.screenshot()`. Fixes
  [#2040](https://github.com/cypress-io/cypress/issues/2040).
- There's now an
  [`after:screenshot` plugin event](/api/node-events/after-screenshot-api) you can
  use in your `pluginsFile` to work with screenshots after they are taken. This
  enables you to rename them, move their location, resize them, send them to a
  service, etc. Fixes
  [#2039](https://github.com/cypress-io/cypress/issues/2039).
- Added `Cypress.browser` object which contains information about the currently
  running browser. Fixes
  [#1919](https://github.com/cypress-io/cypress/issues/1919) and
  [#1961](https://github.com/cypress-io/cypress/issues/1961).
- Added `Cypress.spec` object which contains information about the currently
  running spec. Fixes
  [#1918](https://github.com/cypress-io/cypress/issues/1918).
- URLs displayed in the Command Log during [cy.visit()](/api/commands/visit) are
  no longer arbitrarily truncated at a set width. Fixes
  [#1995](https://github.com/cypress-io/cypress/issues/1995).

**Documentation Changes:**

- [Update `cy.screenshot()` doc to include new file naming behavior](/api/commands/screenshot)
- [Updated "Command Line" doc to include new cache commands](/app/references/command-line)
- [Added `Cypress.browser` doc.](/api/cypress-api/browser)
- [Added `Cypress.spec` doc.](/api/cypress-api/spec)
- [Added `after:screenshot` plugin event doc.](/api/node-events/after-screenshot-api)

## 3.0.1

_Released 05/30/2018_

**Bugfixes:**

- Seeded KitchenSink tests no longer fail. Fixes
  [#1812](https://github.com/cypress-io/cypress/issues/1812).
- The binary cache now correctly works and will not reinstall Cypress if an
  existing version is already installed. Fixes
  [#1813](https://github.com/cypress-io/cypress/issues/1813).
- Closing the `Electron` browser and then opening `Chrome` no longer causes
  `cy.screenshot()` to fail. Fixes
  [#1820](https://github.com/cypress-io/cypress/issues/1820).
- Fixed a bug with Windows users seeing crashes with
  `tty.getWindowSize is not a function`. Fixes
  [#1815](https://github.com/cypress-io/cypress/issues/1815) and
  [#1817](https://github.com/cypress-io/cypress/issues/1817).

## 3.0.0

_Released 05/29/2018_

**Summary:**

- There is a new [`cy.task()`](/api/commands/task) command that enables you to
  go outside the browser to perform tasks directly in `node`. This will make it
  easy to setup, scaffold, seed, talk to your database, or anything else useful
  on a back end.
- [`cy.screenshot()`](/api/commands/screenshot) has been rewritten from the
  ground up. It now takes a screenshot of **only** the application under test by
  default. It also can take full page screenshots or element only screenshots.
  This is the first step of Cypress Dashboard support for screenshot diffing.
- When running with `cypress run` we now run each spec file in isolation from
  others. We have rewritten our reporter to provide more details and provide a
  summary of the run at the bottom.
- The Dashboard has been upgraded to make it easier to understand the results of
  each spec run. This was done in anticipation of providing you the ability to
  parallelize and load balance your spec files automatically in CI.
- We are now capturing the performance and timings data of every test when using
  `--record` mode and are beginning to offer the first analytics and insights
  into the health of your tests on our Dashboard Service.
- Cypress now caches globally per version which prevents it from being installed
  multiple times across projects.

**Breaking Changes:**

- We now run each spec file in isolation from one another. This _shouldn't_
  technically break anything, but if you have set up your tests in a way that
  requires the state of a previous spec file, this could potentially break your
  tests. This will go a long ways towards reducing problems we were seeing with
  long runs in CI. Fixes
  [#431](https://github.com/cypress-io/cypress/issues/431),
  [#681](https://github.com/cypress-io/cypress/issues/681),
  [#1589](https://github.com/cypress-io/cypress/issues/1589),
  [#1539](https://github.com/cypress-io/cypress/issues/1539), and
  [#1692](https://github.com/cypress-io/cypress/issues/1692).
- The environment variable `CYPRESS_BINARY_VERSION` has been removed. You should
  use the equivalent environment variable `CYPRESS_INSTALL_BINARY` instead.
- The environment variable `CYPRESS_SKIP_BINARY_INSTALL` has been removed. To
  skip the binary install, set `CYPRESS_INSTALL_BINARY=0`.
- `screenshotOnHeadlessFailure` has been removed as an option in `cypress.json`.
  Instead you can now control this behavior directly with code by setting
  `screenshotOnRunFailure` to `false` within the new
  [Screenshot API](/api/cypress-api/screenshot-api). Fixes
  [#1140](https://github.com/cypress-io/cypress/issues/1140) and
  [#1754](https://github.com/cypress-io/cypress/issues/1754).
- `trashAssetsBeforeHeadlessRuns` has been renamed to `trashAssetsBeforeRuns` in
  our configuration. Fixes
  [#1754](https://github.com/cypress-io/cypress/issues/1754).
- `videoRecording` has been renamed to `video` in our configuration to be
  clearer and prevent confusion about recording to our Dashboard. Fixes
  [#562](https://github.com/cypress-io/cypress/issues/562).
- Cypress no longer copies screenshots and videos to artifacts for CircleCI.
  Copying artifacts should be left up to the user to
  [handle themselves in their `circle.yml` file](https://circleci.com/docs/2.0/artifacts/).
  Fixes [#1592](https://github.com/cypress-io/cypress/issues/1592).
- The standard output has been redesigned to better visualize spec files running
  in isolation and to be more visually appealing. This may break any specialized
  logic written that expected the standard output to be structured in a specific
  way or contain specific words. Fixes
  [#1588](https://github.com/cypress-io/cypress/issues/1588).
- [`cy.screenshot()`](/api/commands/screenshot) no longer takes a screenshot of
  the runner by default. Instead it will hide the runner, remove application
  scaling and then scroll to take a full page picture of your application.
- `before` and `after` hooks within a
  [support file](/app/core-concepts/writing-and-organizing-tests#Support-file)
  now run before/after every spec file, instead of only once before/after the
  entire run. [#681](https://github.com/cypress-io/cypress/issues/681)

**Features:**

- There is a new [`cy.task()`](/api/commands/task) command for executing any
  arbitrary `node` code.
- You can now run multiple specs by passing a glob to the `--spec` argument of
  `cypress run`. Fixes [#263](https://github.com/cypress-io/cypress/issues/263),
  [#416](https://github.com/cypress-io/cypress/issues/416) and
  [#681](https://github.com/cypress-io/cypress/issues/681).
- There is a new [Screenshot API](/api/cypress-api/screenshot-api) and new
  [`cy.screenshot()`](/api/commands/screenshot) options that allow you set
  defaults for how screenshots are captured, whether to scale your app, disable
  timers and animations, or which elements to black out in the screenshot. You
  can also set defaults for whether to automatically take screenshots when there
  are test failures or whether to wait for the Command Log to synchronize before
  taking the screenshot. Fixes
  [#1424](https://github.com/cypress-io/cypress/issues/1424).
- [`cy.screenshot()`](/api/commands/screenshot) can now be chained off of
  commands that yield a DOM element and will only take a screenshot that
  element.
- During install of cypress, the Cypress binary is now downloaded to a global
  cache. This prevents multiple projects from downloading the same Cypress
  version. Fixes [#1300](https://github.com/cypress-io/cypress/issues/1300).
- The seeded `example_spec.js` file has been replaced by an `examples` folder
  with several spec files. This more closely reflects the recommended use of
  Cypress - as smaller groups of tests split among many files that will now be
  run in isolation. The tests were also updated from ES5 to ES6. You can see all
  changes in the
  [`cypress-example-kitchensink` repo](https://github.com/cypress-io/cypress-example-kitchensink)
  Fixes [#1460](https://github.com/cypress-io/cypress/issues/1460).
- Cypress now watches all the `plugins file`'s entire dependency tree to make
  iterating on plugins easier. Fixes
  [#1407](https://github.com/cypress-io/cypress/issues/1407).
- Videos will now be saved locally with a filename named after the associated
  `spec` file that it represents. Fixes
  [#980](https://github.com/cypress-io/cypress/issues/980).
- The Test Runner now displays `skipped` tests differently than `pending` tests.
  [#244](https://github.com/cypress-io/cypress/issues/244).
- Standard output now displays the number of `skipped` tests within the summary
  output during `cypress run`.
  [#1559](https://github.com/cypress-io/cypress/issues/1559).
- The url to view the run in the Dashboard is now printed to output during
  `cypress run`. [#494](https://github.com/cypress-io/cypress/issues/494).
- We now print the browser and browser version run in the output during
  `cypress run`. [#833](https://github.com/cypress-io/cypress/issues/833).
- The build number and url to CI for tests run within [Drone](https://drone.io/)
  are now captured and displayed on the run within the Dashboard.
  [#1709](https://github.com/cypress-io/cypress/issues/1709).

**Bugfixes:**

- Cypress no longer crashes when attempting to proxy a WebSocket connection that
  fails. Fixes [#556](https://github.com/cypress-io/cypress/issues/556).
- Asserting that an attribute equals a falsy value no longer fails when the
  value was falsy. Fixes
  [#831](https://github.com/cypress-io/cypress/issues/831) and
  [#1491](https://github.com/cypress-io/cypress/issues/1491).
- Snapshots now ignore stylesheets with `media="print"`. Fixes
  [#1568](https://github.com/cypress-io/cypress/issues/1568).
- Fixed issue where the Cypress `window` was being returned instead of AUT's
  `window`. Fixes [#1436](https://github.com/cypress-io/cypress/issues/1436).
- The `close` event now properly fires on `file` when manually closing the
  browser. Fixes [#1560](https://github.com/cypress-io/cypress/issues/1560).
- `cypress.env.json` is now being watched for changes. Fixes
  [#1464](https://github.com/cypress-io/cypress/issues/1464).
- Fixed issue when using TypeScript that caused namespace errors to be thrown.
  Fixes [#1627](https://github.com/cypress-io/cypress/issues/1627).
- Fixed error message on [.type()](/api/commands/type) and
  [.clear()](/api/commands/clear) when typing into non-typeable elements or
  clearing non-clearable elements to accurately list the elements allowed. Fixes
  [#1650](https://github.com/cypress-io/cypress/issues/1650).
- Added Chrome flag `--disable-blink-features=RootLayerScrolling` to prevent the
  application under test from "shaking" in recent versions of Chrome. Fixes
  [#1620](https://github.com/cypress-io/cypress/issues/1620).
- Fixed issue where some TTY characters were not properly formatted in the
  terminal for Windows during `cypress run`. Fixes
  [#1143](https://github.com/cypress-io/cypress/issues/1143) and
  [#1550](https://github.com/cypress-io/cypress/issues/1550).
- Removed an extraneous error display from Electron during `cypress run` about a
  "transparent titlebar" setting. Fixes
  [#1745](https://github.com/cypress-io/cypress/issues/1745).

**Misc:**

- We are now aggressively turning on colors when running in CI. If you're using
  Jenkins and **do not** have an ANSI color plugin installed, you can turn off
  colors with the `NO_COLOR=1` environment variable. Fixes
  [#1747](https://github.com/cypress-io/cypress/issues/1747) and
  [#1748](https://github.com/cypress-io/cypress/issues/1748).
- When running `cypress run --record` on forked PR's, we now detect that the
  Record Key is missing and do not fail the build. We will display a warning,
  but continue running the tests. Fixes
  [#1193](https://github.com/cypress-io/cypress/issues/1193).
- Searching in the Test Runner now filters out any non-matching folders. Fixes
  [#1706](https://github.com/cypress-io/cypress/issues/1706).
- Duplicate, subsequent logs in the Command Log are now collapsed and can be
  expanded to view all logs. Fixes
  [#1580](https://github.com/cypress-io/cypress/issues/1580).
- We now throw a descriptive error if an alias using [.as()](/api/commands/as)
  was defined starting with the `@` character.
  [#1643](https://github.com/cypress-io/cypress/issues/1643).
- We now pass the `--disable-device-discovery-notifications` flag automatically.
  This should prevent Chromium browser from automatically trying to communicate
  with devices in your network, such as printers, while running tests. Fixes
  [#1600](https://github.com/cypress-io/cypress/issues/1600).
- We now pass any reporter errors along and provide a stack if a custom reporter
  you've provided does not exist. Fixes
  [#1192](https://github.com/cypress-io/cypress/issues/1192).
- You can now pass a normal object to `cypress.open()` or `cypress.run()`
  through the [Module API](/app/references/module-api), just as you would from
  the command line. [#1442](https://github.com/cypress-io/cypress/issues/1442).
- Added type definitions for `Cypress.off` and `Cypress.log`. Fixes
  [#1110](https://github.com/cypress-io/cypress/issues/1110) and
  [#1591](https://github.com/cypress-io/cypress/issues/1591).
- Update type definitions for [`cy.screenshot()`](/api/commands/screenshot) to
  reflect new changes to command's options. Fixes
  [#1753](https://github.com/cypress-io/cypress/issues/1753).
- The type definition for [`.filter()`](/api/commands/filter) now correctly
  supports a function argument.
- The type definition for [`.scrollIntoView()`](/api/commands/scrollintoview) no
  longer errors when passed a `duration` option. Fixes
  [#1606](https://github.com/cypress-io/cypress/issues/1606).
- `NODE_OPTIONS` environment variables now print within the `cypress:cli` logs
  when running in `DEBUG` mode. Although using `NODE_OPTIONS` themselves should
  not be used due to [#1676](https://github.com/cypress-io/cypress/issues/1676).
  Fixes [#1673](https://github.com/cypress-io/cypress/issues/1673).
- Cypress will error and exit with status 1 if no specs were found during
  `cypress run`. Fixes
  [#1585](https://github.com/cypress-io/cypress/issues/1585).
- We are now counting and aggregating the stats at the end of test runs
  separately from Mocha. Cypress considers a test to be the `it` and any
  accompanying `hooks` that run before or after a test. Cypress will correctly
  associate failures in those hooks to the test itself. We believe this more
  accurately models and just "makes sense". Fixes
  [#1163](https://github.com/cypress-io/cypress/issues/1163).
- The minimum viewport size has been lowered from `200` pixels to `20` pixels.
  Fixes [#1169](https://github.com/cypress-io/cypress/issues/1169) and
  [#1444](https://github.com/cypress-io/cypress/issues/1444).
- Internal changes to our API structure and communication. Fixes
  [#1170](https://github.com/cypress-io/cypress/issues/1170),
  [#1413](https://github.com/cypress-io/cypress/issues/1413),
  [#1415](https://github.com/cypress-io/cypress/issues/1415).
- We output a much more complete test results object when using cypress as a
  module. Fixes [#1248](https://github.com/cypress-io/cypress/issues/1248).
- Added keywords to Cypress npm package. Fixes
  [#1508](https://github.com/cypress-io/cypress/issues/1508).
- Centered the animating icon in the Test Runner when 'running'. Fixes
  [#1695](https://github.com/cypress-io/cypress/issues/1695).
- We made some changes to internal references of `headed` and `headless` to be
  more specific and instead reference `run mode` and `interactive mode`. Fixes
  [#1140](https://github.com/cypress-io/cypress/issues/1140).
- The test name text is now selectable inside the Command Log. Fixes
  [#1476](https://github.com/cypress-io/cypress/issues/1476).
- Minor improvements to contributing docs and scripts. Fixes
  [#1665](https://github.com/cypress-io/cypress/issues/1665).
- We now collect Semaphore CI params and provide URL's to click into the builds
  from the Dashboard. Fixes
  [#1785](https://github.com/cypress-io/cypress/issues/1785).
- Config overrides coming from the CLI or environment variables are now
  validated the same way as if they've been set in `cypress.json`. Fixes
  [#1783](https://github.com/cypress-io/cypress/issues/1783).
- There is a better / more helpful experience around passing unknown options to
  the CLI. Fixes [#837](https://github.com/cypress-io/cypress/issues/837).
- Display an empty message when there is no commit information on recorded runs.
  Fixes [#1809](https://github.com/cypress-io/cypress/issues/1809).

**Documentation Changes:**

- [New `cy.task()` doc](/api/commands/task)
- [New `Screenshot API` doc](/api/cypress-api/screenshot-api)
- [Update `cy.screenshot()` doc to include new accepted usage and options](/api/commands/screenshot)
- [Update `Installing Cypress` doc to include new options for Cypress binary caching](/app/get-started/install-cypress)
- [Updated `Writing and Organizing Tests` to include newly seeded `examples` folder](/app/core-concepts/writing-and-organizing-tests)
- [Updated `cypress run` spec args](/app/references/command-line#cypress-run)
- [Updated `Dashboard Service`](/cloud/get-started/introduction)
- [Updated `Launching Browsers` to include our disabling of device discovery notifications](/app/references/launching-browsers)
- [Updated `Preprocessors` to reflect all ways `close` event could be triggered](/cloud/get-started/introduction)
- Updated use of "running headlessly" to more accurate "during `cypress run`"

## 2.1.0

_Released 03/01/2018_

**Bugfixes:**

- Prevent a bug with `node-sass` on OSX + Windows when local `node` version does
  not match bundled `node` when importing components directly in spec files. The
  underlying issue was because we forgot to update `Buildkite` and `Appveyor`
  when we upgraded `Electron` in `2.0.0`. Fixes
  [#1387](https://github.com/cypress-io/cypress/issues/1387) and
  [#1390](https://github.com/cypress-io/cypress/issues/1390).

**Features:**

- The
  Selector Playground
  has been updated to automatically prefer `data-cy`, `data-test` or
  `data-testid` attributes when providing the unique selector for an element.
  Additionally it now exposes a
  public API that you can use to
  control how it determines which selector to use. Fixes
  [#1135](https://github.com/cypress-io/cypress/issues/1135).

**Documentation Changes:**

- Added `Selector Playground Guide`
- Added `Selector Playground API`
- [Updated `Best Practices`](/app/core-concepts/best-practices)
- [Updated `FAQ`](/app/faq)
- [Updated `Introduction to Cypress`](/app/core-concepts/introduction-to-cypress)

## 2.0.4

_Released 02/25/2018_

**Bugfixes:**

- The `cypress` npm package now has the correct `engines` set in `package.json`.
  This was accidentally getting overwritten and caused errors when
  `engineStrict` was set in environments using `node` older than `8.2.1`. Fixes
  [#1373](https://github.com/cypress-io/cypress/issues/1373).

## 2.0.3

_Released 02/21/2018_

**Bugfixes:**

- The runner no longer appears to "hang" if a `before` hook fails in a test with
  siblings. Previously the test would never generate a `status` and look pending
  forever. This was a visual bug only. Fixes
  [#1343](https://github.com/cypress-io/cypress/issues/1343).
- The Desktop GUI properly renders folders that contain specs in Windows now.
  Fixes [#1335](https://github.com/cypress-io/cypress/issues/1335).

**Misc:**

- The viewport dropdown helper in the Runner now displays string quoted JSON
  instead of an object literal. This better matches how you should write those
  options in `cypress.json`. Fixes
  [#1350](https://github.com/cypress-io/cypress/issues/1350).

## 2.0.2

_Released 02/17/2018_

**Bugfixes:**

- Fixed more edge cases where legitimate JavaScript code was being modified
  unexpectedly by the
  [modifyObstructiveCode](/app/references/configuration#Browser)
  configuration. We've tightened up the RegExp even more and added 40 popular JS
  libraries to test against to ensure they are not modified. Fixes
  [#1334](https://github.com/cypress-io/cypress/issues/1334).
- Fixed an edge case when hooks such as `beforeEach` or `afterEach` threw an
  **identical** error message, Cypress would hang indefinitely and never finish
  running the tests. Fixes
  [#674](https://github.com/cypress-io/cypress/issues/674).
- Fixed bug when `Errors` that threw with no arguments: `throw new Error()` and
  had their messages appended would duplicate the message over and over again.
  Fixes [#1338](https://github.com/cypress-io/cypress/issues/1338).

## 2.0.1

_Released 02/16/2018_

**Bugfixes:**

- Using [cy.contains()](/api/commands/contains) with a RegExp argument is now
  properly escaped. Fixes
  [#1322](https://github.com/cypress-io/cypress/issues/1322).
- Fixed a runaway RegExp causing large `.js` files to take dozens of seconds to
  process. This was a regression caused by [2.0.0](#2-0-0) with the new
  [modifyObstructiveCode](/app/references/configuration#Browser) option.
  We've optimized the RegExp and the performance is back to being almost
  identical to transparently passing responses through. Fixes
  [#1330](https://github.com/cypress-io/cypress/issues/1330).

## 2.0.0

_Released 02/15/2018_

**Breaking Changes:**

- The built in default `Electron` browser has been bumped from version `53` to
  `59`. This version represents the version of `Chromium` that Electron is
  using. In other words, running `cypress run` (or via `Electron`) will be like
  running your tests in `Chrome 59` now. Although it is unlikely this would
  actually _break_ any of your tests - it is technically possible they could
  behave differently. Fixes
  [#895](https://github.com/cypress-io/cypress/issues/895) and
  [#891](https://github.com/cypress-io/cypress/issues/891) and
  [#823](https://github.com/cypress-io/cypress/issues/823) and
  [#860](https://github.com/cypress-io/cypress/issues/860) and
  [#1011](https://github.com/cypress-io/cypress/issues/1011) and
  [#1252](https://github.com/cypress-io/cypress/issues/1252) and
  [#1276](https://github.com/cypress-io/cypress/issues/1276).
- We are now detecting and automatically stripping code that obstructs Cypress
  from being able to test your application. Specifically, we are removing
  JavaScript code that tries to prevent **clickjacking** and **framebusting**.
  We have written very conservative rules that do their best to **only** strip
  these specific JS snippets, but it is technically possible that it may
  unintentionally rewrite valid JS if they match the RegExp patterns. There is a
  new configuration option called
  [modifyObstructiveCode](/app/references/configuration#Browser) that is
  `true` by default. If you are experiencing problems after upgrading, you can
  turn this off and this will disable modifying your JS code. If you were using
  Cypress and upon visiting your website you would experience seemingly "random"
  redirects - these problems should now be eliminated. Fixes
  [#886](https://github.com/cypress-io/cypress/issues/886) and
  [#1245](https://github.com/cypress-io/cypress/issues/1245) and
  [#1064](https://github.com/cypress-io/cypress/issues/1064) and
  [#992](https://github.com/cypress-io/cypress/issues/992) and
  [#692](https://github.com/cypress-io/cypress/issues/692) and
  [#352](https://github.com/cypress-io/cypress/issues/352).
- We are now clearing the browser's disk cache each time it opens (before any
  tests run). This means that any files that have been cached from
  `Cache-Control` headers will be cleaned and removed. In the future, we will
  expose a new `cy.clearCache()` method to provide finer grained control of
  clearing the cache on a per test basis. But for now, this is an improvement.
  Fixes [#1124](https://github.com/cypress-io/cypress/issues/1124).
- The `--spec` option is now normalized against the current working directory
  `cwd` instead of the project that you are running Cypress in. That means
  passing a path from the command line to a spec file will now work even when
  the project path is not `cwd`. Fixes
  [#1159](https://github.com/cypress-io/cypress/issues/1159).

**Bugfixes:**

- [blacklistHosts](/app/references/configuration#Browser) would occasionally
  not work if you were blocking a host that had previously cached a file. In
  this case, the browser would serve it from disk and not make an actual HTTP
  request. This issue has been solved by clearing the cache when the browser
  opens. Fixes [#1154](https://github.com/cypress-io/cypress/issues/1154).
- [blacklistHosts](/app/references/configuration#Browser) is now correctly
  accepted via the `--config` CLI flag.
- Spies and Stubs created with [cy.stub()](/api/commands/stub) and
  [cy.spy()](/api/commands/spy) will now retry their assertions when utilized
  from an [alias](/api/commands/as). Fixes
  [#1156](https://github.com/cypress-io/cypress/issues/1156).
- Basic auth is working again in Chrome 63 and Chrome 64. We "for real" fixed it
  this time by adding auth headers automatically at the network proxy layer and
  bypassed the browser altogether. We automatically apply auth headers if you
  provide a username/password in the URL of a `cy.visit(url)`. We also added a
  new `auth` option to specify the `username/password` using
  `cy.visit(url, options)`. All of the requests that match the origin of the URL
  will have the `Authorization: Basic <...>` headers added. Fixes
  [#1288](https://github.com/cypress-io/cypress/issues/1288).
- Fixed domain parsing failures when `local` or `localhost` was not used as a
  `tld`. Fixes [#1292](https://github.com/cypress-io/cypress/issues/1292) and
  [#1278](https://github.com/cypress-io/cypress/issues/1278).
- Removed the flag `--disable-background-networking` from the Chrome launch args
  to fix problems in CI that would throttle XHR callbacks by up to 20-30
  seconds. Fixes [#1320](https://github.com/cypress-io/cypress/issues/1320).

**Misc:**

- We now properly display nested objects and arrays that come from
  `cypress.json` in the Settings tab in the Desktop Application.
- There's now a proper "empty view" when you go to setup your project to record
  on our Dashboard and you have not created any Organizations. Fixes
  [#1306](https://github.com/cypress-io/cypress/issues/1306).
- Removed the message about private projects requiring a paid account in the
  future. There will be a free tier including private projects. Fixes
  [#827](https://github.com/cypress-io/cypress/issues/827).
- We moved the location of the browser's disk cache. That means that if you've
  been using Cypress for a really long time - you may have built up quite a
  large existing cache (in the hundreds of `mb`). Before upgrading, you should
  open the browser and then manually clear the Cache. Or - if you have already
  upgraded to `2.0.0` delete the following folders:
  - OSX: `~/Library/Caches/Cypress`
  - Linux: `~/.cache/Cypress`
  - Windows: `%APPDATA%\Cypress\cy\production\browsers`

## 1.4.2

_Released 02/04/2018_

**Bugfixes:**

- Fixed not being able to visit subdomains when using 2nd level sub domains.
  Fixes [#1175](https://github.com/cypress-io/cypress/issues/1175) and
  [#600](https://github.com/cypress-io/cypress/issues/600).
- Fixed not being able to visit private TLD's from the public suffix such as
  `github.io`, `gitlab.io` or `herokuapp.com`. These now all work correctly.
  Fixes [#380](https://github.com/cypress-io/cypress/issues/380) and
  [#402](https://github.com/cypress-io/cypress/issues/402) and
  [#802](https://github.com/cypress-io/cypress/issues/802) and
  [#493](https://github.com/cypress-io/cypress/issues/493) and
  [#1161](https://github.com/cypress-io/cypress/issues/1161).
- Fixed not being able to visit URLs that used `*localhost` such as
  `http://app.localhost:8080`. Fixes
  [#451](https://github.com/cypress-io/cypress/issues/451).
- Mochawesome now works correctly and outputs files in all versions. Fixes
  [#551](https://github.com/cypress-io/cypress/issues/551).
- Mochawesome will exit correctly with code `1` when a hook fails.
  [#1063](https://github.com/cypress-io/cypress/issues/1063).
- Fixed some incorrect typings with TypeScript. Fixes
  [#1219](https://github.com/cypress-io/cypress/issues/1219) and
  [#1186](https://github.com/cypress-io/cypress/issues/1186).
- Fixed bug with custom 3rd party Mocha reporters relying on `test.titlePath`
  being a function. Fixes
  [#1142](https://github.com/cypress-io/cypress/issues/1142).
- Fixed typo in `cypress.schema.json`. Fixes
  [#1167](https://github.com/cypress-io/cypress/issues/1167).
- Fixed typo in CLI deps error about Docker. Fixes
  [#1136](https://github.com/cypress-io/cypress/issues/1136).
- Prevent `NODE_ENV` from being set to `undefined` when parent process did not
  have it defined. Fixes
  [#1223](https://github.com/cypress-io/cypress/issues/1223).

**Misc:**

- We have begun to aggregate failures and other stats ourselves instead of
  relying on Mocha reporters. Fixes
  [#1141](https://github.com/cypress-io/cypress/issues/1141).
- Added TypeScript `should/and` autocomplete and typings for Cypress events.
  Fixes [#1187](https://github.com/cypress-io/cypress/issues/1187) and
  [#1132](https://github.com/cypress-io/cypress/issues/1132).
- Upgrade deps. Fixes
  [#1174](https://github.com/cypress-io/cypress/issues/1174).

## 1.4.1

_Released 12/26/2017_

**Bugfixes:**

- Using `DEBUG=cypress:*` now correctly outputs all debugging information on OSX
  and Linux. Previously output other then `cypress:cli` was ignored due to the
  CLI ignoring `stderr` from the binary. Fixes
  [#921](https://github.com/cypress-io/cypress/issues/921).
- `stdout` is now captured correctly in Windows when recording to the Dashboard.
  Fixes [#977](https://github.com/cypress-io/cypress/issues/977) and issue
  [#711](https://github.com/cypress-io/cypress/issues/711).
- Windows now forcibly displays colors correctly to the terminal. Fixes
  [#1127](https://github.com/cypress-io/cypress/issues/1127).

**Misc:**

- `TTY` is now handled correctly for Linux and OSX. This means that CI providers
  which turned off colors due to `TTY` being false will now display colors again
  such as TravisCI. Fixes
  [#1126](https://github.com/cypress-io/cypress/issues/1126).
- We now handle Xvfb exiting with a non zero status code and display that error
  to you. This should help with situations where Xvfb is misconfigured on the
  system. Fixes [#1113](https://github.com/cypress-io/cypress/issues/1113).
- We've added debug output for Xvfb when `DEBUG=cypress:xvfb` is enabled.
  Helpful when diagnosing problems with Xvfb. Fixes
  [#1128](https://github.com/cypress-io/cypress/issues/1128).
- We've added more TypeScript documentation for `cy.*` methods. Fixes
  [#1117](https://github.com/cypress-io/cypress/issues/1117).
- When developing on Cypress, we now start the process through the CLI to bring
  it into parity with how it works when used in production. Fixes
  [#838](https://github.com/cypress-io/cypress/issues/838).
- Upgraded various CLI dependencies that were flagged for security warnings.
  There wasn't an actual security problem - just static analyzers complaining.
  Fixes [#1103](https://github.com/cypress-io/cypress/issues/1103).

## 1.4.0

_Released 12/19/2017_

**Features:**

- There is now a Search Bar in the Desktop GUI that enables you to filter the
  list of specs. Helpful for projects with a ton of spec files. Fixes
  [#1098](https://github.com/cypress-io/cypress/issues/1098).

**Bugfixes:**

- The seeded `example_spec.js` file no longer fails in Windows on the
  [cy.exec()](/api/commands/exec) test. It now conditionally runs a command
  appropriate for Windows. Fixes
  [#1097](https://github.com/cypress-io/cypress/issues/1097).
- Trying to log in to Cypress no longer causes the app to crash. This area has
  had many more tests added. Fixes
  [#1093](https://github.com/cypress-io/cypress/issues/1093).
- Some minor improvements to TypeScript definitions around
  [.then()](/api/commands/then). Fixes
  [#1084](https://github.com/cypress-io/cypress/issues/1084).
- The Selector Playground now works correctly in the Electron browser. Fixes
  [#1086](https://github.com/cypress-io/cypress/issues/1086).

## 1.3.0

_Released 12/17/2017_

**Features:**

- Plugins now emit a
  [before:browser:launch](/api/node-events/browser-launch-api) event
  exposing you the browser that will be launched and its launch arguments. This
  enables you to modify the arguments prior to launching the browser. You can
  also use these arguments to modify how Chrome runs and to also test Chrome
  extensions. Fixes [#691](https://github.com/cypress-io/cypress/issues/691) and
  [#298](https://github.com/cypress-io/cypress/issues/298).
- We have launched a "CSS Selector Playground", a new UI button in the Test
  Runner that enables you to highlight elements in your application and receive
  a unique selector. You can also find elements by their text content. These
  mimics [cy.get()](/api/commands/get) and
  [cy.contains()](/api/commands/contains) behavior. Additionally you can copy
  the generated Cypress command to your clipboard or output the generated
  selector to your console. This feature is in beta. It only works in Chrome
  (not in Electron). We are aware of some bugs in it, but it is good enough for
  use and feedback. Please check out issue
  [#917](https://github.com/cypress-io/cypress/issues/917), watch an animated
  gif demonstration, and leave any feedback you have there. Fixes
  [#917](https://github.com/cypress-io/cypress/issues/917).

Documentation Changes:

- [Added `Browser Launch API`](/api/node-events/browser-launch-api)
- [Updated `Plugins Guide`](/app/plugins/plugins-guide)
- [Updated `Writing a Plugin API`](/api/node-events/overview)

## 1.2.0

_Released 12/14/2017_

**Features:**

- Plugins can now return a `Promise` and modify the yielded `config` to set new
  configuration values and environment variables. Fixes
  [#1042](https://github.com/cypress-io/cypress/issues/1042) and
  [#909](https://github.com/cypress-io/cypress/issues/909) and
  [#576](https://github.com/cypress-io/cypress/issues/576).
- There is a new [userAgent](/app/references/configuration#Browser) option in
  `cypress.json`. This enables you to change the `userAgent` of the browser for
  the entire browsing session. Fixes
  [#364](https://github.com/cypress-io/cypress/issues/364).
- There is a new [blacklistHosts](/app/references/configuration#Browser)
  option in `cypress.json` that allows you to block requests made to those
  hosts. Blocked requests will respond with a `503` status code. This is useful
  for blocking 3rd party domains like Google Analytics. We have added a
  [new 'Stubbing Google Analytics' recipe](/app/references/recipes#Stubbing-and-spying)
  demonstrating this. Fixes
  [#442](https://github.com/cypress-io/cypress/issues/442).
- Added chai assertions in TypeScript to generate autocompletion. Fixes
  [#1073](https://github.com/cypress-io/cypress/issues/1073).

**Bugfixes:**

- Updated TypeScript definitions to more accurately match the current Cypress
  API. Fixes [#1050](https://github.com/cypress-io/cypress/issues/1050). Also
  note that if you were extending Cypress in TypeScript the `Chainer` interface
  changed. Please read issue #1048 to understand
  what you will need to update.

**Misc:**

- Renamed `environmentVariables` to `env` in the Desktop GUI. Fixes
  [#1052](https://github.com/cypress-io/cypress/issues/1052).
- [Cypress.config()](/api/cypress-api/config) now
  returns a complete set of configuration values. Fixes
  [#509](https://github.com/cypress-io/cypress/issues/509).
- Added TypeScript typings for bundled Cypress tools like `$`, `_`, etc. Fixes
  [#1046](https://github.com/cypress-io/cypress/issues/1046).
- Some error messages were made more passive. Fixes
  [#1025](https://github.com/cypress-io/cypress/issues/1025).

**Documentation Changes:**

- [Added `Configuration API`](/api/node-events/configuration-api)
- [Added `Recipes`](/app/references/recipes)
- [Updated `Configuration`](/app/references/configuration)
- [Updated `Environment Variables`](/app/references/environment-variables)
- [Updated `Using Cypress FAQ`](/app/faq)
- [Updated `Plugins Guide`](/app/plugins/plugins-guide)
- [Updated `Writing a Plugin API`](/api/node-events/overview)

## 1.1.4

_Released 12/06/2017_

**Bugfixes:**

- Fixed an issue causing `Chrome` to timeout when attempted to be run through
  our Docker containers. Fixes
  [#1031](https://github.com/cypress-io/cypress/issues/1031).
- Several TypeScript typings were added, updated and fixed. Fixes
  [#1006](https://github.com/cypress-io/cypress/issues/1006).
- Using a regular `http://` URL now works when using the
  `CYPRESS_BINARY_VERSION` flag to point the binary at an external location.
  Fixes [#1001](https://github.com/cypress-io/cypress/issues/1001).
- File watching is fixed (again) when changing between specs. Fixes
  [#1018](https://github.com/cypress-io/cypress/issues/1018).

**Misc:**

- There is now a new
  [`CYPRESS_SKIP_BINARY_INSTALL`](/app/references/advanced-installation#Environment-variables)
  flag you can pass during `npm install` which skips the binary installation
  after the `cypress` npm module completes its installation. Fixes
  [#1005](https://github.com/cypress-io/cypress/issues/1005).
- We now launch Chrome with `--no-sandbox` and `--disable-gpu` options in Linux.
  We will soon release a new plugin event that enables you to modify the browser
  arguments we use by default. This _shouldn't_ cause issues with existing Linux
  users, and instead it should fix many CI setups that were using our Docker
  containers or your own home grown installed Chrome setup. Fixes
  [#1021](https://github.com/cypress-io/cypress/issues/1021) and
  [#1020](https://github.com/cypress-io/cypress/issues/1020).
- Removed several aliases from our browser detector. These were not implemented
  properly and not needed - and thus only caused indirection. Fixes
  [#1023](https://github.com/cypress-io/cypress/issues/1023).

## 1.1.3

_Released 12/03/2017_

**Bugfixes:**

- JSON fixtures with unicode escape sequences are now parsed correctly. Fixes
  [#964](https://github.com/cypress-io/cypress/issues/964).
- The default `browserify` plugin no longer fires `watched:file:changed` twice
  leading to an uncaught exception that was popping up in the console. Also
  fixed a minor state bug in the `browserify` package. Fixes
  [#968](https://github.com/cypress-io/cypress/issues/968).
- Cypress no longer reports `Electron` as the browser that ran in the Dashboard
  Service when a different browser was run. Fixes
  [#854](https://github.com/cypress-io/cypress/issues/854).
- Invalid cookie values no longer crash Cypress. Fixes
  [#962](https://github.com/cypress-io/cypress/issues/962).

**Misc:**

- We are now bundling our own `TypeScript` definitions with the `cypress` npm
  module. You no longer have to install `@types/cypress` anymore. We'll continue
  to keep these updated with API changes. Fixes
  [#856](https://github.com/cypress-io/cypress/issues/856).
- Uncaught exceptions originating from **your** application code and/or test
  code are now **distinctly** and **clearly** indicated in the error message. We
  included a link to our docs to educate you on how you can optionally disable
  Cypress from catching these. Fixes
  [#825](https://github.com/cypress-io/cypress/issues/825).
- [cy.visit()](/api/commands/visit) now accepts `{ failOnStatusCode: false }`
  which enables you to visit pages that respond with a non `2xx` status code.
  This brings it into parity with [cy.request()](/api/commands/request). Fixes
  [#421](https://github.com/cypress-io/cypress/issues/421) and
  [#574](https://github.com/cypress-io/cypress/issues/574).
- The contributing Readme's have been updated and improved for each package.
  Fixes [#995](https://github.com/cypress-io/cypress/issues/995).
- Added utility methods [Cypress.platform](/api/cypress-api/platform) and
  [Cypress.arch](/api/cypress-api/arch) for returning the underlying OS
  information. Uses node's `os` module under the hood. Fixes
  [#824](https://github.com/cypress-io/cypress/issues/824) and
  [#675](https://github.com/cypress-io/cypress/issues/675).

**Documentation Changes:**

- [Added `Cypress.version`](/api/cypress-api/version)
- [Added `Cypress.arch`](/api/cypress-api/arch)
- [Added `Cypress.platform`](/api/cypress-api/platform)

## 1.1.2

_Released 11/26/2017_

**Bugfixes:**

- Fixed a regression caused by [.type()](/api/commands/type) adhering to
  `maxlength` incorrectly. Special character sequences were not respected. Now
  [.type()](/api/commands/type) works with special characters and implements a
  complete fix for `maxlength`. In addition to it working, it now fires all
  applicable browser events without modifying the actual input value. Fixes
  [#955](https://github.com/cypress-io/cypress/issues/955).
- Errors coming from plugins now display correctly in the Test Runner. Fixes
  [#945](https://github.com/cypress-io/cypress/issues/945).

**Documentation Changes:**

- [Added ESLint, Docker, and TypeScript to Plugins](/app/plugins/plugins-list)
- [Added recipe for TypeScript with Browserify](/app/references/recipes)
- [Added recipe for TypeScript with webpack](/app/references/recipes)
- [Added recipe for Direct Controlling AngularJS](/app/references/recipes)
- [Added recipe for E2E API Testing](/app/references/recipes)
- Added more video tutorials
- [Improved displaying list of Tutorials, Recipes, Applications, and Docker examples](/app/references/recipes)

## 1.1.1

_Released 11/20/2017_

**Bugfixes:**

- Fixed a bug swallowing plugin errors due to undefined `reject` function. Fixes
  [#934](https://github.com/cypress-io/cypress/issues/934).
- [.type()](/api/commands/type) now respects the `maxlength` attribute and will
  not type beyond it. Fixes
  [#928](https://github.com/cypress-io/cypress/issues/928).

## 1.1.0

_Released 11/19/2017_

**Summary:**

- We have officially launched the new **Plugins API** interface. This adds a
  `cypress/plugins/index.js` file to new and existing projects. Using this file
  will enable you to modify the internals of Cypress running in the background
  `node` process. This means you will be able to use `node` APIs that are
  executed outside of the browser.
- We have currently added only
  [one event](/api/node-events/overview#List-of-events) for modifying the
  test file preprocessor, but this paves the way for adding many more event
  types. You can now modify every aspect of how files are sent to the browser.
- We have extracted the default Browserify preprocessor into its own package -
  [`@cypress/browserify-preprocessor`](https://github.com/cypress-io/cypress-browserify-preprocessor).
  This is bundled with Cypress, but it is extracted so it can be used / modified
  by you to change the default options we pass to Browserify. Additionally, you
  can swap out this preprocessor for something else entirely.

**Features:**

- There is now a [Plugins API interface](/app/plugins/plugins-guide).
  Partially addresses [#684](https://github.com/cypress-io/cypress/issues/684).
- We have added the first Plugin API event called:
  [file:preprocessor](/api/node-events/overview#List-of-events). Fixes
  [#580](https://github.com/cypress-io/cypress/issues/580) and
  [#581](https://github.com/cypress-io/cypress/issues/581).
- You can now customize the default Babe; configuration options for the
  Browserify preprocessor. Fixes
  [#343](https://github.com/cypress-io/cypress/issues/343) and
  [#905](https://github.com/cypress-io/cypress/issues/905).
- CoffeeScript 2 is supported via modifying the default options for the
  Browserify preprocessor. Fixes
  [#663](https://github.com/cypress-io/cypress/issues/663).
- You can swap out or extend the default preprocessor to do exotic things like
  compile ClojureScript into JavaScript. Fixes
  [#533](https://github.com/cypress-io/cypress/issues/533).
- We have created a
  [`@cypress/webpack-preprocessor`](https://github.com/cypress-io/cypress/tree/master/npm/webpack-preprocessor)
  preprocessor npm package for you webpack users (because we are nice!).
  Fixes [#676](https://github.com/cypress-io/cypress/issues/676).

**Bugfixes:**

- [`cy.contains(selector, regexp)`](/api/commands/contains) now works as
  intended. Fixes [#801](https://github.com/cypress-io/cypress/issues/801).
- We no longer format fixtures in any capacity. This fixes a bug with improperly
  formatting fixtures in Windows. You should handle formatting fixtures
  yourself. Fixes [#884](https://github.com/cypress-io/cypress/issues/884) and
  [#902](https://github.com/cypress-io/cypress/issues/902).
- [cy.viewport()](/api/commands/viewport) resolves if only width or only height
  changes. Fixes [#873](https://github.com/cypress-io/cypress/issues/873).
- Cypress now auto reloads when spec files are modified in Windows. Fixes
  [#712](https://github.com/cypress-io/cypress/issues/712).

**Misc:**

- There is a new `--global` option useful with
  [cypress open](/app/references/command-line#cypress-open) to force Cypress to
  open in global mode. This is helpful when you have multiple nested Cypress
  projects but only want to install Cypress once in the root project. Fixes
  [#889](https://github.com/cypress-io/cypress/issues/889).
- The [module API](/app/references/module-api) accepts `reporterOptions` as an
  object literal like it does for the `env` and `config` properties. Fixes
  [#899](https://github.com/cypress-io/cypress/issues/899).

**Documentation Changes:**

- Created "Testing React TodoMVC" tutorials
- [Created "Variables and Aliases" core concept](/app/core-concepts/variables-and-aliases)
- [Created "Conditional Testing" core concept](/app/guides/conditional-testing)
- [Created "Plugins" guide](/app/plugins/plugins-guide)
- [Created "List of Plugins"](/app/plugins/plugins-list)
- [Created "Writing a Plugin" API](/api/node-events/overview)
- [Created "Preprocessors API"](/api/node-events/preprocessors-api)
- [Updated "Using Cypress FAQ"](/app/faq)
- [Updated "Best Practices"](/app/core-concepts/best-practices)

## 1.0.3

_Released 10/29/2017_

**Features:**

- The Test Runner now enables you to collapse folders when displaying a list of
  specs. Fixes [#760](https://github.com/cypress-io/cypress/issues/760).

**Bugfixes**

- The `onChange` event callback for React now works (again) on `input` type
  `number` or `email`. Fixes
  [#816](https://github.com/cypress-io/cypress/issues/816) and
  [#770](https://github.com/cypress-io/cypress/issues/770).
- Fixed error when recording and failing to parse the git commit message. Fixes
  [#847](https://github.com/cypress-io/cypress/issues/847) and
  [#841](https://github.com/cypress-io/cypress/issues/841).
- Using a single space on: `cy.type(' ')` now works. Fixes
  [#807](https://github.com/cypress-io/cypress/issues/807).
- `cy.spread()` can now be used on a collection of DOM elements. Fixes
  [#735](https://github.com/cypress-io/cypress/issues/735).
- CLI shows help message when it is invoked with an unknown command like
  `$(npm bin)/cypress foo`. Fixes
  [#641](https://github.com/cypress-io/cypress/issues/641).

**Misc:**

- Enable passing `CYPRESS_RECORD_KEY` without using the CLI by invoking the
  binary directly. Fixes
  [#820](https://github.com/cypress-io/cypress/issues/820).
- Cypress binaries can now be pointed to a staging environment with
  `CYPRESS_ENV=staging`. Fixes
  [#813](https://github.com/cypress-io/cypress/issues/813).
- The Test Runner displays the scrollbar correctly when the update banner is
  displayed. Fixes [#803](https://github.com/cypress-io/cypress/issues/803).
- The branch name is now properly collected when recording in Buildkite CI.
  Fixes [#777](https://github.com/cypress-io/cypress/issues/777).
- You can install the Cypress binary from any URL or file path using the
  [`CYPRESS_BINARY_VERSION` environment variable](/app/references/advanced-installation).
  Closes [#701](https://github.com/cypress-io/cypress/issues/701).

**Documentation Changes:**

- [Created "Conditional Testing" core concept](/app/guides/conditional-testing)
- [Created "Key Differences" core concept](/app/get-started/why-cypress)
- [Updated "Best Practices"](/app/core-concepts/best-practices)
- [Updated "FAQ Usage"](/app/faq)

## 1.0.2

_Released 10/13/2017_

**Bugfixes:**

- `cy.type` now correctly fires change events on React 16. Fixes
  [#647](https://github.com/cypress-io/cypress/issues/647).
- Fixed some problems serializing objects during domain change caused by
  circular references. In this case `zone.js` was the culprit. Fixes
  [#741](https://github.com/cypress-io/cypress/issues/741).

**Misc:**

- `cy.scrollTo` now logs its coordinates when options are used. Fixes
  [#725](https://github.com/cypress-io/cypress/issues/725).
- You can now use environment variables that have a `=` character as values.
  Fixes [#620](https://github.com/cypress-io/cypress/issues/620).
- There is now a new `videoUploadOnPasses` configuration option in
  `cypress.json`. Turning this off will only compress and upload videos on
  failures. This only affects projects which are setup to record to the
  Dashboard. Fixes [#460](https://github.com/cypress-io/cypress/issues/460).

**Documentation Changes:**

- [Added examples for "Catalog of Events"](/api/cypress-api/catalog-of-events)
- [Added](/ Updated FAQ for "Using Cypress"' using-cypress-faq)

## 1.0.1

_Released 10/10/2017_

**Bugfixes:**

- Prevent error during verification in the CLI on Linux / OSX. Also makes
  terminal colors work again. Fixes
  [#717](https://github.com/cypress-io/cypress/issues/717) and
  [#718](https://github.com/cypress-io/cypress/issues/718).

## 1.0.0

_Released 10/09/2017_

**Summary:**

- `1.0.0` marks our transition out of a **private** beta and into a **public**
  beta. We've lifted all the restrictions for using Cypress. It is now
  accessible to everyone. Until we are out of beta, the
  [Dashboard Service](/cloud/get-started/introduction) will continue to be free.
- We will continue to follow `semver` from this point on (and also a bit more
  rigorously).
- Cypress is now [open source](https://github.com/cypress-io/cypress)! This
  project is licensed under the terms of the
  [MIT License](https://github.com/cypress-io/cypress/blob/develop/LICENSE.md).
- We have a [Contributing Guideline](https://on.cypress.io/contributing) to help
  contributors get started as well as
  [issues labeled `first-timers-only`](https://github.com/cypress-io/cypress/labels/first-timers-only)
  for those wanting to contribute right away.
- You can now use the Test Runner application without logging in. Some areas of
  the application still require logging in through GitHub, like the 'Runs' tab
  and viewing the project's 'Record Key'. The only places where login is
  required is when it interacts with our external servers. Naturally these
  places are optional and will not affect the local test writing + running
  experience.
- We've removed the requirement of filling out an early adopter form and
  approval for logging in with GitHub to Cypress.
- [www.cypress.io](https://www.cypress.io) has an all new design to help new
  visitors get started quickly and understand our future pricing more clearly.
- We are still updating the docs to reflect the `1.0.0` release.

**Features:**

- Windows is now supported. We have been running it successfully on EC2 and all
  of our example projects are also running in CI with AppVeyor. It is still
  super beta (we're aware of a couple issues already) and we're still updating
  our own infrastructure to manage and test it as comprehensively as we do OSX
  and Linux. We are only building a 32bit version of Windows, but will soon be
  building a 64bit as well. As of today the Windows binary is about 2x the size
  of what it will be. Unzipping takes a long time, we are sorry. Fixes
  [#74](https://github.com/cypress-io/cypress/issues/74) and
  [#444](https://github.com/cypress-io/cypress/issues/444).

**Misc:**

- Added the `Beta` flag everywhere (since we are still technically in beta).
- Reduced the frequency the app checked for updates. Fixes
  [#713](https://github.com/cypress-io/cypress/issues/713).
- The CLI now sends `arch` parameter to the download server so we can build and
  serve multiple binaries for Windows + Linux.

**Documentation Changes:**

- [Updated "Installing Cypress"](/app/get-started/install-cypress)
- [Updated "Writing your First Test"](/app/end-to-end-testing/writing-your-first-end-to-end-test)
- Added a 10 minute Getting Started video that
  [Andrew Van Slaars](https://github.com/avanslaars) created.

## 0.20.3

_Released 10/06/2017_

- Improved verifying the binary for the first time after an `npm install`. Fixes
  [#709](https://github.com/cypress-io/cypress/issues/709).

## 0.20.2

_Released 10/06/2017_

**Possibly Breaking Changes:**

- [cy.exec()](/api/commands/exec) now trims output by default. That means if you
  were using an `eq` assertion the output will no longer have a trailing newline
  character `\n`. It's unlikely you are doing this, but it is possible you may
  need to update your assertions to remove this character. Fixes
  [#697](https://github.com/cypress-io/cypress/issues/697).

**Bugfixes:**

- Handle errors gracefully when Electron window has been closed before paint
  events happen. Fixes [#705](https://github.com/cypress-io/cypress/issues/705).
- Basic auth now works _again_. Fixes
  [#573](https://github.com/cypress-io/cypress/issues/573).
- [cy.exec()](/api/commands/exec) now properly sources each time it is invoked
  instead of only once. Fixes
  [#694](https://github.com/cypress-io/cypress/issues/694).

**Misc:**

- `cypress open` now accepts the `--project` flag which enables you to use a
  root level Cypress installation and point to multiple sub projects. Fixes
  [#661](https://github.com/cypress-io/cypress/issues/661).
- Prevent newer versions of Chrome from prompting you to save passwords and
  suppressed other extension related popups for Windows. Fixes
  [#704](https://github.com/cypress-io/cypress/issues/704).

## 0.20.1

_Released 09/17/2017_

**Features:**

- `cypress run` now supports a `--headed` option so the Electron browser will
  display instead of running headlessly. This matches what you can already do in
  the GUI. Fixes [#657](https://github.com/cypress-io/cypress/issues/657).

**Bugfixes:**

- Using Cypress on nested projects now correctly works. Fixes
  [#635](https://github.com/cypress-io/cypress/issues/635).
- Using `cy.type` on Angular 2 apps now works. We're now firing the `key`
  property when typing. We've properly mapped all the special keys too.
- `onBeforeLoad` now gets invoked when overriding `cy.visit`. Fixes
  [#656](https://github.com/cypress-io/cypress/issues/656) and
  [#640](https://github.com/cypress-io/cypress/issues/640).
- Using multiple `cy.visit` back to back which only change the `hash` now
  properly wait for the `hashchange` event to occur before moving on. Fixes
  [#652](https://github.com/cypress-io/cypress/issues/652).
- CLI now displays the correct overridden `CYPRESS_BINARY_VERSION` on first
  open. Fixes [#659](https://github.com/cypress-io/cypress/issues/659).
- Fixed the incorrectly spelled chainer `descendents`. It is now correctly
  spelled as `descendants`. Fixes
  [#642](https://github.com/cypress-io/cypress/issues/642).
- The visibility algorithm has been considerably improved. Should fix most if
  not all visibility problems. We accounted for CSS transforms, translations,
  and added a new branch of logic for `position: fixed` elements which should be
  much more accurate. Fixes
  [#631](https://github.com/cypress-io/cypress/issues/631).
- The CLI now treats `-h` and `--help` and `help` as valid commands. Fixes
  [#645](https://github.com/cypress-io/cypress/issues/645).

**Misc:**

- You can now pass an object literal as `config` when using Cypress as a node
  module. Fixes [#639](https://github.com/cypress-io/cypress/issues/639).
- Passing `--reporter` can now reference an absolute path instead of just
  relative. Fixes [#658](https://github.com/cypress-io/cypress/issues/658).
- The algorithm that ensures an element is not covered now calculates this at
  the center coordinates instead of the top left. This should yield more
  accurate results, be closer to the default expectations of users, and bypass
  fractional pixel problems we were having. Fixes
  [#655](https://github.com/cypress-io/cypress/issues/655).
- Improved crash reporting when the binary throws an uncaught error.

**Documentation Changes:**

- [Updated "Command Line"](/app/references/command-line)
- [Updated "Interacting with Elements"](/app/core-concepts/interacting-with-elements)

## 0.20.0

_Released 09/10/2017_

**Summary:**

- `0.20.0` is our biggest technical release ever. It accounts for more than
  2,000 commits. It's full of breaking changes we wanted to land prior to having
  our public `1.0.0` release.
- You can now
  [install Cypress as a real `npm` module](/app/get-started/install-cypress),
  and even `require` it in your node files.
- We rewrote the entire driver (we've all been there) and converted all 2,500+
  tests to be run within Cypress itself.

**CLI Changes:**

- You now use `npm` to manage Cypress versions like every other dev dependency.
- Running `npm install --save-dev cypress` will automatically download the CLI +
  binary.
- There is no longer a separate `cypress install` step, but this command still
  exists if you want to **reinstall** the binary for whatever reason.
- No need to use `cypress-cli` anymore to manage Cypress versions. **You will
  need to uninstall the `cypress-cli` by running
  `npm uninstall -g cypress-cli`**.
- The [`cypress` module can be `required`](/app/references/module-api) in your
  own node projects to programmatically control Cypress the same way you would
  from the command line.
- We've updated the installation experience to account for running locally and
  in CI so it doesn't generate a ton of logs in `stdout`.
- The `CYPRESS_VERSION` environment variable is gone because now the version of
  the binary is controlled by the npm module version. If for some reason you
  want to download the binary of a different version you can use the new
  `CYPRESS_BINARY_VERSION` environment variable - but you'll get a warning
  message when the versions don't match.
- If you install cypress globally using `npm install -g cypress` we will warn
  you that you should check this in as a `devDependency` but Cypress will
  continue to work in "global mode".
- Cypress now verifies it can run on your system prior to actually running.
  It'll do this for each new version the first time you try to use it. Errors it
  receives from attempting to run will bubble up nicely, so you'll get output
  for things like
  [missing linux dependencies](/app/continuous-integration/overview#Dependencies)
  instead of absolutely _nothing_ like before.
- We have better error handling and messaging around Xvfb failures.
- There is a new [`--browser` option](/app/references/command-line#cypress-run)
  that lets you change the browser that runs from the command line. This works
  the same way as changing the browser in the GUI, with the exception that any
  browser other than the default `electron` browser will **not** record a video.
  This is solvable but requires more work.
- Whenever you encounter errors in the CLI we'll output helpful debugging
  information at the bottom of each error.
- You can use the new environment variable
  [`DEBUG=cypress:cli`](/app/references/command-line#Debugging-commands) to see
  debugging output from the CLI.

**Breaking Changes:**

- We've removed the undocumented `cy.chain()` command. You should be able to
  safely remove this from your code. Fixes
  [#456](https://github.com/cypress-io/cypress/issues/456).
- Updated [Cypress.\_](/api/utilities/_) to use [lodash](https://lodash.com)
  instead of [Underscore](http://underscorejs.org). Fixes
  [#548](https://github.com/cypress-io/cypress/issues/548).
- If any of an element's parent's overflow is 'hidden', we now calculate if the
  element is outside of the boundaries of that parent element and validate
  visibility assertions accordingly. This may cause some tests that were
  previously passing to now accurately fail. Fixes
  [#410](https://github.com/cypress-io/cypress/issues/410).
- [`.select()`](/api/commands/select) should now look for the trimmed value
  inside of an `<option></option>`. This may change the content argument
  required to select the option you intended in your
  [`.select()`](/api/commands/select) command. Fixes
  [#175](https://github.com/cypress-io/cypress/issues/175).
- When passing the option `{ force: true }` to [`.click()`](/api/commands/click)
  and [`.type()`](/api/commands/type), we no longer attempt to scroll the
  element into view. We've also disabled the check that the element is in view
  before clicking or typing. Fixes
  [#553](https://github.com/cypress-io/cypress/issues/553) and
  [#537](https://github.com/cypress-io/cypress/issues/537).
- `Cypress.Dom` has been renamed to `Cypress.dom`.
- `Cypress.Log.command` has been renamed to
  [Cypress.log](/api/cypress-api/cypress-log).
- [`chai-jQuery` assertions](/app/references/assertions#Chai-jQuery) no
  longer change the subject when using `prop`, `attr`, and `css` with the
  **3rd** argument (which acts as equality check). Fixes
  [#605](https://github.com/cypress-io/cypress/issues/605).
- We now throw when a value other than `cy` is returned from a test or command
  function. Fixes [#463](https://github.com/cypress-io/cypress/issues/463).
- Returning a promise in a custom command while also invoking cy commands now
  throws. Fixes [#435](https://github.com/cypress-io/cypress/issues/435).
- [cy.then()](/api/commands/then) will now only pass its subject through when
  its callback function returns `undefined`. Previous it would pass the subject
  on `null` values as well.
- [cy.contains()](/api/commands/contains) can no longer be chained on subjects
  which aren't `window`, `document` or `element`. This brings it into parity
  with the new custom command rules and makes it much less "magical". It
  enforces you to use it in a much clearer way when querying the entire
  document.
- Removed `Cypress.addParentCommand()`, `Cypress.addChildCommand()`, and
  `Cypress.addDualCommand()` in favor of the
  [new custom command interface](/api/cypress-api/custom-commands).

**Features:**

- [`chai-jQuery` assertions](/app/references/assertions#Chai-jQuery) have
  improved error messaging, and have had their internal double assertions
  removed, and can now be made on raw DOM objects. Fixes
  [#605](https://github.com/cypress-io/cypress/issues/605).
- [`chai-jQuery` assertions](/app/references/assertions#Chai-jQuery) now
  throw a nice error message when you're asserting on a non DOM object. Fixes
  [#604](https://github.com/cypress-io/cypress/issues/604).
- New [.trigger()](/api/commands/trigger) command. Useful for triggering
  arbitrary events. Fixes
  [#406](https://github.com/cypress-io/cypress/issues/406).
- New [cy.scrollTo()](/api/commands/scrollto) command. Useful for having a
  container scroll to a specific position. Fixes
  [#497](https://github.com/cypress-io/cypress/issues/497) &
  [#313](https://github.com/cypress-io/cypress/issues/313).
- New [.scrollIntoView()](/api/commands/scrollintoview) command. Useful for
  scrolling an element into view. Fixes
  [#498](https://github.com/cypress-io/cypress/issues/498) &
  [#313](https://github.com/cypress-io/cypress/issues/313) &
  [#519](https://github.com/cypress-io/cypress/issues/519).
- Input ranges are now more easily testable using the new
  [.trigger()](/api/commands/trigger) command. See our
  [new recipe](/app/references/recipes#Testing-the-DOM) for details on how. Fixes
  [#287](https://github.com/cypress-io/cypress/issues/287).
- Testing drag and drop is now possible using the new
  [.trigger()](/api/commands/trigger) command. See our
  [new recipe](/app/references/recipes#Testing-the-DOM) for details on how. Fixes
  [#386](https://github.com/cypress-io/cypress/issues/386).
- Updated [.click()](/api/commands/click) command to accept more position
  arguments. Fixes [#499](https://github.com/cypress-io/cypress/issues/499).
- Added support to [`.type()`](/api/commands/type) for inputs of type `date`,
  `time`, `month`, and `week`. Fixes
  [#27](https://github.com/cypress-io/cypress/issues/27).
- You can now pass a browser option to
  [cypress run](/app/references/command-line#cypress-run) as
  `--browser <browser name>`. This enables you to run the same set of browsers
  when running from the CLI as when you're running from the GUI. Fixes
  [#462](https://github.com/cypress-io/cypress/issues/462) and
  [#531](https://github.com/cypress-io/cypress/issues/531).
- [cypress open](/app/references/command-line#cypress-open) no longer opens a
  detached process by default. Instead `cypress open` now accepts a new flag
  `--detached`, which replicates this behavior. Fixes
  [#531](https://github.com/cypress-io/cypress/issues/531).
- We have all new [Docker examples](/app/continuous-integration/overview#Cypress-Docker-Images) you can check out.
- The [`cypress` npm package](https://www.npmjs.com/package/cypress) now checks
  the currently installed version on `install` and
  [run](/app/references/command-line#cypress-run) and does not re-install Cypress
  if it is already installed. Fixes
  [#396](https://github.com/cypress-io/cypress/issues/396).
- We've added a new [Cypress.Commands](/api/cypress-api/custom-commands)
  interface to handle adding your own custom commands. Fixes
  [#436](https://github.com/cypress-io/cypress/issues/436).
- You can now overwrite existing commands with
  [Cypress.Commands.overwrite](/api/cypress-api/custom-commands).
- We removed an artificial delay that was being set in between commands. This
  means test commands now run faster.
- You can now
  [disable Cypress global exception handlers](/api/cypress-api/catalog-of-events)
  for your application. Fixes
  [#254](https://github.com/cypress-io/cypress/issues/254)
- Uncaught errors appearing in your spec files or support files are now properly
  caught, have the right exit code, and display correctly. Fixes
  [#345](https://github.com/cypress-io/cypress/issues/345)
- Cypress will now scroll past multiple elements that cover up an element to be
  interacted with. It also now factors in elements with `position: sticky`.
  Fixes [#571](https://github.com/cypress-io/cypress/issues/571) and
  [#565](https://github.com/cypress-io/cypress/issues/565).
- Cypress now scrolls all parent containers (not just `window`) when attempting
  to
  [check an element's actionability](/app/core-concepts/interacting-with-elements#Actionability).
  Fixes [#569](https://github.com/cypress-io/cypress/issues/569).
- Using Chai.js's `assert` interface now works correctly in your specs.
- Screenshots are now taken during each runnable that fails. Errors in tests
  will happen there. Errors in hooks will also happen there. Previously a
  screenshot would only happen after everything (including hooks) ran. Fixes
  [#394](https://github.com/cypress-io/cypress/issues/394)
- [cy.screenshot()](/api/commands/screenshot) now synchronizes its state with
  the reporter. This means you should see error messages (on the left side) on
  automatic screenshot errors.
- Using mocha's async `done` callback now works properly.
- You can now programmatically
  [intercept and potentially turn off uncaught application errors](/api/cypress-api/catalog-of-events)
  from failing your tests.
- You can now programmatically control whether you accept or cancel
  [window.confirm()](/api/cypress-api/catalog-of-events) calls from your
  application.

**Dependencies:**

- Updated [Cypress.Promise](/api/utilities/promise) (which is Bluebird) from
  version `2.9.25` to `3.5.0`
- Updated [chai](/app/references/bundled-libraries#Chai) from version `1.9.2`
  to `3.5.0`
- Updated [sinon](/app/references/bundled-libraries#Sinonjs) from version
  `1.x` to `3.2.0`
- Updated [jQuery](/api/utilities/$) from version `2.1.4` to `2.2.4`.
- Removed [chai-jQuery](/app/references/bundled-libraries#Chai-jQuery) and
  rewrote it from scratch.

**Deprecations:**

- The [`cypress-cli` npm package](https://www.npmjs.com/package/cypress-cli) has
  been deprecated. Fixes
  [#316](https://github.com/cypress-io/cypress/issues/316).
- The interface for writing custom commands has been deprecated.
  [Please read our docs on the new custom commands interface](/api/cypress-api/custom-commands).
  Fixes [#436](https://github.com/cypress-io/cypress/issues/436) and
  [#465](https://github.com/cypress-io/cypress/issues/465).
- There are no more global, in-app updates. Versioning should be primarily
  [controlled via `npm`](/app/get-started/install-cypress) like every
  other package / dependency in your project. For users not using `npm` you can
  manually download new versions of Cypress when they're released.

**Bugfixes:**

- Fixed busted internal timers that caused random timeouts, proxy errors,
  incorrect delays, and long pauses when loading the GUI. Fixes
  [#572](https://github.com/cypress-io/cypress/issues/572).
- `cy.route()` now matches requests opened with lowercase methods. Fixes
  [#607](https://github.com/cypress-io/cypress/issues/607).
- Fixed regression where multiple uses of `cy.server()` in a `before` hook was
  throwing an error. Fixes
  [#80](https://github.com/cypress-io/cypress/issues/80) and
  [#510](https://github.com/cypress-io/cypress/issues/510) and
  [#595](https://github.com/cypress-io/cypress/issues/595).
- When editing `cypress.json` file, the dead browser page no longer appears.
  Fixes [#492](https://github.com/cypress-io/cypress/issues/492).
- [`.type()`](/api/commands/type) should now work on inputs regardless of
  capitalization of `type` attribute. Fixes
  [#550](https://github.com/cypress-io/cypress/issues/550).
- Fixed issues where [`.type()`](/api/commands/type) was not appending text
  properly. Fixes [#503](https://github.com/cypress-io/cypress/issues/503) and
  [#568](https://github.com/cypress-io/cypress/issues/568).
- Fixed issue where [`.type()`](/api/commands/type) with `type="email"` inputs
  were throwing an error. Fixes
  [#504](https://github.com/cypress-io/cypress/issues/504).
- Fixed issue where using [`.type()`](/api/commands/type) on an input with a
  `type` defined in uppercase (`input type="TEXT"`) would throw an error and not
  type. Fixes [#550](https://github.com/cypress-io/cypress/issues/550).
- Fixed issue with [.clear()](/api/commands/clear) and `type="number"` inputs.
  Fixes [#490](https://github.com/cypress-io/cypress/issues/490).
- Fixed issue where [`cy.exec()`](/api/commands/exec) was failing when running
  Cypress in Docker. Fixes
  [#517](https://github.com/cypress-io/cypress/issues/517).
- Cypress CLI no longer requires `git` to install. Fixes
  [#124](https://github.com/cypress-io/cypress/issues/124)
- Improved the reporter's responsive design so controls still show at narrower
  widths. Fixes [#544](https://github.com/cypress-io/cypress/issues/544).
- Commands text will no long cut off into ellipses when the Command Log is set
  to a wider width. Fixes
  [#528](https://github.com/cypress-io/cypress/issues/528).
- Fixed issue where setting `fixturesFolder` to `false` would throw an error.
  Fixes [#450](https://github.com/cypress-io/cypress/issues/450).
- Fixed issue where Cypress hanged due to Xvfb permissions. More intuitive
  output is given during install failures. Fixes
  [#330](https://github.com/cypress-io/cypress/issues/330).
- [The checks used to determine an element's actionability](/app/core-concepts/interacting-with-elements#Actionability)
  are now run synchronously. This solves some circumstances where the element
  could have moved or otherwise change between the checks. Fixes
  [#570](https://github.com/cypress-io/cypress/issues/570).
- Fixed issue where clipped elements with `overflow-y: hidden` were falsely
  passing as "visible". Fixes
  [#563](https://github.com/cypress-io/cypress/issues/563).
- When using [`.select()`](/api/commands/select) on a select with multiple
  options with the same value, we now properly set `selectedIndex` and
  `selectedOptions` on the `select`. Fixes
  [#554](https://github.com/cypress-io/cypress/issues/554).
- Fixed issue where changing any spec file (renaming, adding, deleting) would
  remove the highlighted styling of the currently active spec file in the Test
  Runner. Fixes [#547](https://github.com/cypress-io/cypress/issues/547).
- We now get the absolute paths of styles to use when displaying snapshots. This
  will fix situations where some stylesheets were improperly referenced during
  the snapshot, so did not display styles correctly. Fixes
  [#525](https://github.com/cypress-io/cypress/issues/525).
- Fixed issue where commands would retry and potentially exceed their timeout
  values during page transitions. Fixes
  [#594](https://github.com/cypress-io/cypress/issues/594)
- Fixed issue where server routes were lost after page load if not initiated by
  a [`cy.visit()`](/api/commands/visit) command. Fixes
  [#177](https://github.com/cypress-io/cypress/issues/177)
- Using mocha's `done` callback now works correctly. We've improved mocha's
  handling of uncaught exceptions and properly associate them to test failures.
- [cy.viewport()](/api/commands/viewport) is now synchronized with the UI so
  that it does not resolve until the DOM has re-rendered using the dimensions.
- "outer assertions" now are correctly retried by previous commands. Fixes
  [#543](https://github.com/cypress-io/cypress/issues/543).
- The example_spec from the
  [kitchen-sink](https://github.com/cypress-io/cypress-example-kitchensink) will
  never accidentally be seeded when running
  [cypress run](/app/references/command-line#cypress-run) on a brand new project.

**Misc:**

- We now display a warning in the console when returning a promise from a test
  and also invoking a Promise or cy commands. Fixes
  [#464](https://github.com/cypress-io/cypress/issues/464).
- Reduced the number of internal Cypress network requests in the "Network Panel"
  of Dev Tools. Fixes [#606](https://github.com/cypress-io/cypress/issues/606).
- We've moved our entire codebase into one into a private "Monorepo". This is in
  anticipation for going open source (making the GitHub repo public) and should
  make it easier for everyone to contribute to our code. Fixes
  [#256](https://github.com/cypress-io/cypress/issues/256).
- When element's are not visible due to being covered by another element, the
  error message now says what element is covering what element.
  [#611](https://github.com/cypress-io/cypress/issues/611)
- Improved the calculations to calculate an elements visibility. Additionally
  updated error messages to be clearer whenever an element isn't considered
  visible. Fixes [#613](https://github.com/cypress-io/cypress/issues/613)
- The "Can't start server" error displayed in the Desktop-GUI no longer prevents
  you from interacting in the Desktop App. It now displays as a warning. Fixes
  [#407](https://github.com/cypress-io/cypress/issues/407).
- [`cy.focused()`](/api/commands/focused) now automatically retries until the
  element exists in the DOM. This makes it behave the same as
  [cy.get()](/api/commands/get) Fixes
  [#564](https://github.com/cypress-io/cypress/issues/564) and
  [#409](https://github.com/cypress-io/cypress/issues/409).
- We now support per-project `state.json`. Fixes
  [#512](https://github.com/cypress-io/cypress/issues/512).
- We can now handle multiple projects per server. Fixes
  [#512](https://github.com/cypress-io/cypress/issues/512).
- The Test Runner can now have projects added by being 'dragged' in. Fixes .
- The Test Runner update window now has messaging about `package.json`
  versioning. Fixes [#513](https://github.com/cypress-io/cypress/issues/513).
- The Test Runner now accounts for cypress being installed per project as npm
  module. Fixes [#500](https://github.com/cypress-io/cypress/issues/500) and
  [#514](https://github.com/cypress-io/cypress/issues/514).
- [cypress install](/app/references/command-line) `-d` option. Fixes
  [#389](https://github.com/cypress-io/cypress/issues/389).
- Exposing Cypress Binary should no longer be necessary when cypress is locally
  installed. Fixes [#379](https://github.com/cypress-io/cypress/issues/379).
- Added an 'App Data' option in the Desktop App that displays app data. Fixes
  [#475](https://github.com/cypress-io/cypress/issues/475).
- When [`cy.spy()`](/api/commands/spy) or [`cy.stub()`](/api/commands/stub) are
  never called, the error now displays a clearer, grammatically correct error.
  Fixes [#520](https://github.com/cypress-io/cypress/issues/520).
- Detection of installed browsers has been improved. Fixes
  [#511](https://github.com/cypress-io/cypress/issues/511).
- When commands are clicked on and logged into the console from the Command Log,
  they now display their 'yield' instead of 'return', since they really yield
  instead of return. [#612](https://github.com/cypress-io/cypress/issues/612)
- The build process of the driver has been modernized. Fixes
  [#429](https://github.com/cypress-io/cypress/issues/429).
- XHR's from your application are no longer forcefully aborted between tests.
- Better error handling when running commands outside of a test.
- URL changes from navigation events or hashchanges now display more accurately.
- [cy.go()](/api/commands/go) now snapshots before and after the navigation
  event.
- Page load events no longer forcibly `null` out the current subject. This was
  very unexpected and difficult to debug. Now stale elements or other objects
  from previous pages are yielded to you.
- Using an array of the same alias in a [cy.wait()](/api/commands/wait) now
  yields you those XHR's in the order they were requested. Previously it was
  based on when the responses were returned.
- Returning `null` from a [.then()](/api/commands/then) will now change the
  subject to that. Previously returning `null` would not cause subject changes.
- We now no longer remove spies, stubs, or routes at the end of the very last
  test. This enables you to continue to manually use your app and have Cypress
  continue to instrument it.
- Updated a few things to more aggressively cause GC.
- Onboarding dialogs will never show up again once they are dismissed. Fixes
  [#522](https://github.com/cypress-io/cypress/issues/522).
- `window.alert()` and `window.confirm()` now generate a page event in the
  Command Log (including the message).
- [`cy.spy()`](/api/commands/spy) and [`cy.stub()`](/api/commands/stub) now have
  a `.log(bool)` method to disable their calls from generating a Command Log.
  Useful when your spies or stubs are called an excessive number of times.
- Improved command subject validation error messages.
- Improved the element detachment error messages (when you try to interact with
  an element that's become stale / detached from the document).
- We finally have _partial_ iframe support. You can at least now
  [cy.wrap()](/api/commands/wrap) iframe elements and interact with them using
  Cypress commands. More work needs to be done to "switch into" and back "out
  of" iframes. But we're getting there.
- Scaffolding new projects no longer generates a `default.js` file.
- Scaffolded `index.js` and `commands.js` have had their content updated to
  point to the custom commands API.
- You can now call [.focus()](/api/commands/focus) and
  [.blur()](/api/commands/blur) on [cy.window()](/api/commands/window).
- The `CYPRESS_DEBUG` env option has been removed in favor of the `debug` module
  and [`DEBUG=cypress:*`](/app/references/command-line#Debugging-commands) usage.
- Attempting to run [cypress run](/app/references/command-line#cypress-run) on a
  project without a `cypress.json` now errors instead of scaffolding and running
  the kitchen sink.

**Documentation Changes:**

Note: we are still updating all of the docs to reflect all the `0.20.0` changes.

- [New "Catalog of Events"](/api/cypress-api/catalog-of-events)
- [New "Cypress.Commands"](/api/cypress-api/custom-commands)
- [New "Cypress.log"](/api/cypress-api/cypress-log)
- [New ".trigger()"](/api/commands/trigger)
- [New "cy.scrollTo()"](/api/commands/scrollto)
- [New ".scrollIntoView()"](/api/commands/scrollintoview)
- [Updated "Installing Cypress"](/app/get-started/install-cypress)
- [Updated "Writing Your First Test"](/app/end-to-end-testing/writing-your-first-end-to-end-test)
- [Updated "Testing Your App"](/app/end-to-end-testing/testing-your-app)
- [Updated "Command Line"](/app/references/command-line)
- [Updated "Debugging"](/app/guides/debugging)
- [Updated "Assertions"](/app/references/assertions)
- [Updated "Interacting with Elements"](/app/core-concepts/interacting-with-elements)

## 0.19.4

_Released 06/18/2017_

**Bugfixes:**

Fixed [.type()](/api/commands/type) not firing `input` event for
[React](https://reactjs.org/) on versions 15.6.x. Fixes
[#536](https://github.com/cypress-io/cypress/issues/536).

## 0.19.3

_Released 06/14/2017_

**Bugfixes:**

- Server's that send `Content-Encoding: br` no longer cause Cypress to fail due
  to incorrect decoding. Cypress now strips encodings it cannot accept. Fixes
  [#535](https://github.com/cypress-io/cypress/issues/535).

## 0.19.2

_Released 04/16/2017_

**Features:**

- You can now run your tests in the
  [Electron browser](/app/references/launching-browsers#Electron-Browser) that
  comes built with Cypress. You will see it as an option in the browser
  dropdown. This is the same browser that Cypress uses when running
  `cypress run`. This is useful for debugging issues that only occur during
  headless runs. Addresses
  [#452](https://github.com/cypress-io/cypress/issues/452).
- New traversal commands [`.nextAll()`](/api/commands/nextall),
  [`.nextUntil()`](/api/commands/nextuntil),
  [`.parentsUntil()`](/api/commands/parentsuntil),
  [`.prevAll()`](/api/commands/prevall), and
  [`.prevUntil()`](/api/commands/prevuntil) have been added. Addresses
  [#432](https://github.com/cypress-io/cypress/issues/432).

**Bugfixes:**

- An error is now thrown if an `undefined` value is mistakenly passed into
  [`cy.wait()`](/api/commands/wait). Previously, it would set the command
  timeout to an unimaginably large number of ms. Fixes
  [#332](https://github.com/cypress-io/cypress/issues/332)
- Fixed issue where the contents of `state.json` were emptied, which would cause
  a crash and loss of state information. Fixes
  [#473](https://github.com/cypress-io/cypress/issues/473) and
  [#474](https://github.com/cypress-io/cypress/issues/474).
- We no longer write the chrome extension within `node_modules`, and instead
  write this to the proper OS specific `appData` folder. Fixes
  [#245](https://github.com/cypress-io/cypress/issues/245) and
  [#290](https://github.com/cypress-io/cypress/issues/290).

**Misc:**

- Error handling for invalid arguments passed to
  [`cy.wait()`](/api/commands/wait) have been improved and will now suggest
  valid arguments that are acceptable.
- Browsers in the browser dropdown now have colored icons, which help visually
  distinguish the variants of Chrome.
- Increased timeout for browser to make a connection when running during
  `cypress run` from 10 seconds to 30 seconds.
- Internally refactored how browsers are added and spawned in preparation of us
  adding cross browser support.
- Switching specs in the GUI now closes the browser and respawns it and
  refocuses it.

## 0.19.1

_Released 03/09/2017_

**Features:**

- Added `Cypress.version` property. Fixes
  [#404](https://github.com/cypress-io/cypress/issues/404).
- Selecting `<option>` inside `<optgroup>` now works with
  [`.select()`](/api/commands/select). Fixes
  [#367](https://github.com/cypress-io/cypress/issues/367).

**Bugfixes:**

- `EMFILE` errors have been fixed. These were being caused due to `ulimit` being
  too low on your OS. This should fix the file watching problems people were
  having. Essentially we just replaced `fs` with `graceful-fs` and crossed our
  fingers this works. (It did on our machines). Fixes
  [#369](https://github.com/cypress-io/cypress/issues/369).
- Now you can select the error text in the GUI. Fixes
  [#344](https://github.com/cypress-io/cypress/issues/344).
- Cypress now correctly re-bundles files even when `watchForFileChanges` is set
  to `false`. Fixes [#446](https://github.com/cypress-io/cypress/issues/446) and
  [#347](https://github.com/cypress-io/cypress/issues/347).
- Fixed file watching when changing the `integrationFolder` to something other
  than the default value. Fixes
  [#438](https://github.com/cypress-io/cypress/issues/438).
- [`.select()`](/api/commands/select) now works on options that have the same
  value. Fixes [#441](https://github.com/cypress-io/cypress/issues/441).
- Cypress no longer crashes when you click links in the on-boarding screen
  called "To help you get started...". Fixes
  [#227](https://github.com/cypress-io/cypress/issues/227).
- The `example_spec.js` file that gets seeded on a new project no longer fails
  on [`cy.readFile()`](/api/commands/readfile). Fixes
  [#414](https://github.com/cypress-io/cypress/issues/414).

**Misc:**

- We now preserve the Test Runner's position and sizing after it's closed +
  reopened. Fixes [#443](https://github.com/cypress-io/cypress/issues/443).
- We now ignore watching `node_modules`, `bower_components` and a few other
  folders to reduce the number of watched files. Fixes
  [#437](https://github.com/cypress-io/cypress/issues/437).

## 0.19.0

_Released 02/11/2017_

**Notes:**

- We have updated all of the docs related to these changes. The
  [CI Docs](/app/continuous-integration/overview) got a much needed
  facelift.
- There is a new docs section related to the
  [Dashboard](/cloud/get-started/introduction) and the new features.

**Overview:**

- We have officially released our [Dashboard](https://on.cypress.io/dashboard)
  which is our service that will display recorded runs.
- This service has now been fully integrated into the Desktop Application. There
  is a new on-boarding process that helps you setup projects for recording.

**Breaking Changes:**

- We have done our very best to create as little breaking changes as possible.
- You will need to download a new [cypress-cli](/app/references/command-line) -
  version `0.13.1`.
- Older CLI versions will continue to work on `0.19.0` except for the
  [cypress open](/app/references/command-line#cypress-open) command - and will we
  print a warning to nudge you to upgrade.
- Newer CLI versions will not work on versions of Cypress `<0.19.0` (but we
  don't know why this would ever even happen).

**Features:**

- There is a new [Dashboard](https://on.cypress.io/dashboard) service that
  displays your recorded runs.
- The [Dashboard](https://on.cypress.io/dashboard) enables you to view your
  recorded runs, manage projects, create organizations, invite users and set
  permissions.
- Projects are either **public** with their runs being publicly viewable by
  anyone, or **private** which restricts their access to only users you've
  invited. All **existing** projects were set to **private** by default.
- When you invite users (from the Dashboard) we will **automatically** allow
  them. This means you can invite all of your teammates (or anyone else). They
  can start using Cypress without talking to us.
- We now list all of the recorded runs directly in the Test Runner under a new
  `Runs` tab. Fixes [#236](https://github.com/cypress-io/cypress/issues/236).
- Your list of projects in the Test Runner now displays their last recorded run
  status - passing, failing, pending, running, etc.
- We've changed the "Config" tab to now be called "Settings". We added two new
  sections to the "Settings" tab which displays your `projectId` and your Record
  Key. These sections do a much better job explaining what these are and how you
  use them.
- You no longer have to use `cypress get:key` to get your Record Key. We now
  display this in your "Settings" tab and also in the
  [Dashboard](https://on.cypress.io/dashboard).
- Projects will no longer automatically acquire a `projectId` when being added.
  There is now a very explicit **opt-in** process where you setup your project
  to record. This should make it much clearer what's going on behind the scenes.
- [cypress run](/app/references/command-line#cypress-run) now behaves likes
  `cypress ci` previously did and downloads + installs Cypress if it's not
  already installed.
- `cypress ci` now works in OSX, and also works in Linux in Desktop flavors
  (like Ubuntu).

**Misc:**

- [cypress run](/app/references/command-line#cypress-run) will now download and
  install Cypress if it is not already installed.
- We renamed `CYPRESS_CI_KEY` TO `CYPRESS_RECORD_KEY`. This makes it clearer
  what this key actually does - and the fact that it can be run anywhere
  irrespective of CI. We still look for the old named key but will print a
  warning if we detect it.
- We print a warning when using an older CLI tool version. Fixes
  [#424](https://github.com/cypress-io/cypress/issues/424).
- We've improved many of the error messages related to recording runs. Fixes
  [#423](https://github.com/cypress-io/cypress/issues/423).
- `cypress ci` has been deprecated. You now use
  [`cypress run --record --key <record_key>`](/app/references/command-line#cypress-run).
  The key you used to pass to `cypress ci` is the same key. We've consolidated
  these commands into just
  [cypress run](/app/references/command-line#cypress-run) which makes it simpler
  and clearer. Their only difference is that passing `--record` to
  [cypress run](/app/references/command-line#cypress-run) will **record** the
  build to our Dashboard. Fixes
  [#417](https://github.com/cypress-io/cypress/issues/417).

## 0.18.8

_Released 02/05/2017_

**Overview:**

- We have officially implemented our [Sinon.JS](http://sinonjs.org/)
  integration: adding [`cy.stub()`](/api/commands/stub),
  [`cy.spy()`](/api/commands/spy), [`cy.clock()`](/api/commands/clock), and
  [`cy.tick()`](/api/commands/tick). We've matched Sinon's APIs and added
  `sinon-as-promised` and `chai-sinon`. In addition we've fixed Sinon
  performance issues, and improved the display of assertion passes and failures.
- These new APIs will work well in both `unit` tests and `integration` tests.

**Features:**

- You can now use [`cy.stub()`](/api/commands/stub) and
  [`cy.spy()`](/api/commands/spy) synchronously. These both match the Sinon API
  identically. We will display `stub/spy` calls in the Command Log and provide
  the call count, arguments, context, and return values when you click on the
  log. Stubs are automatically reset between tests. Fixes
  [#377](https://github.com/cypress-io/cypress/issues/377).
- We've added our own special aliasing flavor to
  [`cy.stub()`](/api/commands/stub) and [`cy.spy()`](/api/commands/spy). You can
  use the [`.as()`](/api/commands/as) command and we will associate spy and stub
  invocations (the same way we do with XHR aliasing and route matching).
- We've added [`cy.clock()`](/api/commands/clock) and
  [`cy.tick()`](/api/commands/tick) which are both asynchronous methods to
  modify timers in your application under test. We automatically apply clock
  (even if you invoke it before your first [`cy.visit()`](/api/commands/visit))
  and will automatically reapply it after page load.
  [`cy.tick()`](/api/commands/tick) will enable you to control the amount of
  time you want passed in your application. This is great for controlling
  _throttled_ or _debounced_ functions.
- `sinon-as-promised` is automatically applied under the hood which extends
  Sinon and provides the `.resolves(...)` and `.rejects(...)` APIs which makes
  it easy to stub promise returning functions.
- We support and display multiple sub spies when using Sinon's `.withArgs(...)`
  function.

**Misc:**

- We've enhanced `chai-sinon` by improving the output during passes or failures.
  Fixes [#31](https://github.com/cypress-io/cypress/issues/31).
- We've ripped out Sinon's argument serialization in favor of our own.
- We no longer send Sinon to the remote application under test. In other words,
  you'll no longer see `sinon.js` being sent as a network request.
- Deprecated the undocumented `cy.agents` function, but it will continue to work
  and will be officially removed later.

## 0.18.7

_Released 01/30/2017_

**Bugfixes:**

- Fixed regression in [0.18.6](#0-18-6) that caused Cypress to fail when switching spec
  files when `baseUrl` was set in `cypress.json`. Fixes
  [#403](https://github.com/cypress-io/cypress/issues/403).

## 0.18.6

_Released 01/29/2017_

**Features:**

- We now launch Cypress tests directly to the `baseUrl` to avoid an initial page
  refresh when encountering the first [`cy.visit()`](/api/commands/visit)
  command. This should help tests run faster. Fixes
  [#382](https://github.com/cypress-io/cypress/issues/382).

**Bugfixes:**

- Uninstalling the last used browser no longer causes the Test Runner to error
  and hang. Fixes [#371](https://github.com/cypress-io/cypress/issues/371).
- Fixed issue where `stdout` would not be displayed on a completed `cypress ci`
  run. Fixes [#398](https://github.com/cypress-io/cypress/issues/398).
- Fixed a longstanding issue in Cypress where logging in from another computer
  would kill the session on all other computers, and prevent you from accessing
  `cypress get:key` (amongst other things). Fixes
  [#400](https://github.com/cypress-io/cypress/issues/400).

**Misc:**

- We now validate all of the configuration options set in `cypress.json` to
  ensure it has valid types. Fixes
  [#399](https://github.com/cypress-io/cypress/issues/399).
- We now validate that `baseUrl` is accessible **prior** to running tests. This
  prevents a common situation where you may forget to boot your web server and
  have instantly failing tests. Fixes
  [#383](https://github.com/cypress-io/cypress/issues/383).
- We now show the entire scaffolded tree of files when adding a brand new
  project. Fixes [#401](https://github.com/cypress-io/cypress/issues/401).
- We display errors coming from `babel` with more helpful information now.
- Changed the
  [Test Runner](https://github.com/cypress-io/cypress/tree/develop/packages/desktop-gui)
  to use `JWT` for authorization. **You will have to log in again**.

## 0.18.5

_Released 01/08/2017_

**Features:**

- You can now disable `videoCompression` by passing `false` in `cypress.json` or
  env variables. In very long runs and on CPU throttled instances compression
  can take a considerable amount of time, possibly as much as 50% of the time
  spent running actual tests. Fixes
  [#372](https://github.com/cypress-io/cypress/issues/372).

**Misc:**

- Improved performance when running `cypress run` by caching the last bundled
  spec. This prevents having the same spec file rebundled each time
  [`cy.visit()`](/api/commands/visit) caused a full page navigation. You should
  see a moderate improvement in test run time. Fixes
  [#370](https://github.com/cypress-io/cypress/issues/370).
- We are now capturing `stdout` and several other properties for use + display
  in our Dashboard on `cypress ci` runs.
- Enable [`cy.fixture()`](/api/commands/fixture) to send an encoding for images
  other than forcing the default encoding of `base64`. Fixes
  [#373](https://github.com/cypress-io/cypress/issues/373).
- Enable `cy.route()` to pass an `encoding` parameter when using `fx:fixture`
  syntax. Fixes [#374](https://github.com/cypress-io/cypress/issues/374).

## 0.18.4

_Released 12/28/2016_

**Bugfixes:**

- Prevent [`cy.url()`](/api/commands/url) from accessing the URL during
  transition phase and throwing an error. Fixes
  [#356](https://github.com/cypress-io/cypress/issues/356).
- Stubbed functions now serialize correctly when switching domains on a
  [`cy.visit()`](/api/commands/visit). Fixes
  [#354](https://github.com/cypress-io/cypress/issues/354).
- Fixed a handful of scenarios and edge cases where cookies were not properly
  synchronized between external requests and the browser. This led to situations
  where cookies were either duplicated on requests, or were not sent. Fixes
  [#357](https://github.com/cypress-io/cypress/issues/357) and
  [#361](https://github.com/cypress-io/cypress/issues/361) and
  [#362](https://github.com/cypress-io/cypress/issues/362).

**Misc:**

- [`cy.request()`](/api/commands/request) now favors `baseUrl` config over
  remote origin when you do not pass a fully qualified URL. Fixes
  [#360](https://github.com/cypress-io/cypress/issues/360).

## 0.18.3

_Released 12/18/2016_

**Features:**

- There is now a [`cy.log()`](/api/commands/log) command for displaying an
  arbitrary message and args. Useful for providing context while testing and
  debugging long tests. Fixes
  [#342](https://github.com/cypress-io/cypress/issues/342).

**Bugfixes:**

- [`cy.title()`](/api/commands/title) now uses the `document.title` property as
  opposed to querying for `<title>` elements in the `<head>`. Fixes
  [#351](https://github.com/cypress-io/cypress/issues/351) and
  [#331](https://github.com/cypress-io/cypress/issues/331).
- We now exit correctly (with status of 1) in the case of headless renderer
  crashes. Additionally we capture these errors properly, explain what happened,
  and link to external error document to suggest fixes. Fixes
  [#270](https://github.com/cypress-io/cypress/issues/270) and
  [#348](https://github.com/cypress-io/cypress/issues/348).

**Misc:**

- Improved headless performance, and added optimizations for early and often GC.

## 0.18.2

_Released 12/15/2016_

**Bugfixes:**

- Under the hood [`cy.visit()`](/api/commands/visit) now sets an
  `Accept: text/html,*/*` request header to prevent some web servers from
  sending back `404` in the case where they required this header. Only a small %
  of servers would ever do this, but `webpack-dev-server` was one of them. Fixes
  [#309](https://github.com/cypress-io/cypress/issues/309).
- [`cy.request()`](/api/commands/request) now sends an `Accept: */*` request
  header by default too. Fixes
  [#338](https://github.com/cypress-io/cypress/issues/338).

**Misc:**

- [`cy.request()`](/api/commands/request) now includes more debugging
  information (related to headers) in the error output. Fixes
  [#341](https://github.com/cypress-io/cypress/issues/341).
- When [`cy.request()`](/api/commands/request) times out, we now output much
  better error messages including information about the request sent. Fixes
  [#340](https://github.com/cypress-io/cypress/issues/340).

## 0.18.1

_Released 12/11/2016_

**Notes:**

- There is a new
  [recipe showcasing these new features](https://github.com/cypress-io/cypress-example-recipes).
- We are adding several other recipes to show examples of all the ways you can
  use [`cy.request()`](/api/commands/request) to improve your tests.

**Features:**

- [`cy.request()`](/api/commands/request) can now have its automatic redirect
  following turned off by passing `{followRedirect: false}`. Fixes
  [#308](https://github.com/cypress-io/cypress/issues/308).
- [`cy.request()`](/api/commands/request) now has a `qs` option that
  automatically appends query params to the `url` property. Fixes
  [#321](https://github.com/cypress-io/cypress/issues/321).
- [`cy.request()`](/api/commands/request) now follows redirects exactly like a
  real browser. Previously if you `POST`ed to an endpoint and it redirected to a
  `GET` then [`cy.request()`](/api/commands/request) would not follow it due to
  the `method` changing. It now follows method changing redirects by default.
  Fixes [#322](https://github.com/cypress-io/cypress/issues/322).
- [`cy.request()`](/api/commands/request) now accepts the `form` option which
  will convert the `body` values to urlencoded content and automatically set the
  `x-www-form-urlencoded` header. This means you can now use
  [`cy.request()`](/api/commands/request) to bypass your UI and login with
  standard form values. Fixes
  [#319](https://github.com/cypress-io/cypress/issues/319).
- When [`cy.request()`](/api/commands/request) fails, it now outputs the full
  request / response information. This behaves more similar to
  [`cy.visit()`](/api/commands/visit) failures. Fixes
  [#324](https://github.com/cypress-io/cypress/issues/324).
- [`cy.request()`](/api/commands/request) now prints **all** of the underlying
  HTTP request / response information into the Dev Tools' console (when clicking
  on the Command Log). This means that you will see everything you would
  normally see from the `Network` tab as if the request were made from the
  browser. We even print redirect information. Fixes
  [#325](https://github.com/cypress-io/cypress/issues/325).

**Bugfixes:**

- Cypress' internal `babel` will no longer attempt to load your project's
  `.babelrc`. This helps avoid potential version conflicts. Fixes
  [#312](https://github.com/cypress-io/cypress/issues/312).
- We no longer watch the `supportFile` while running `cypress run`. Fixes
  [#329](https://github.com/cypress-io/cypress/issues/329).
- `watchForFileChanges` is now correctly respected in regards to watching all
  files, including the `supportFile`. Fixes
  [#336](https://github.com/cypress-io/cypress/issues/336).
- There is no longer an error when scaffolding a new Cypress project. Fixes
  [#326](https://github.com/cypress-io/cypress/issues/326).
- The Runner UI no longer appears to be "running" when there is a spec bundle
  error in the `supportFile`.
- Cypress now correctly exits during `cypress run` in `linux` when the browser
  fails to connect. Fixes
  [#333](https://github.com/cypress-io/cypress/issues/333).
- Cypress now correctly exits during `cypress run` in `linux` when there is a
  spec bundle error. Fixes
  [#337](https://github.com/cypress-io/cypress/issues/337).
- Cypress now retries up to 3 times for the browser to connect during
  `cypress run`. The warning / error messages were also updated to be clearer.
  Partially addresses [#334](https://github.com/cypress-io/cypress/issues/334).

**Misc:**

- Deprecated `failOnStatus` property for [`cy.request()`](/api/commands/request)
  and renamed to `failOnStatusCode`. Fixes
  [#323](https://github.com/cypress-io/cypress/issues/323).
- Removed the `cookies` option from [`cy.request()`](/api/commands/request)
  because cookies are now _always_ get/set on requests. This option really never
  made any sense to have. Fixes
  [#320](https://github.com/cypress-io/cypress/issues/320).
- Better data reporting when recording builds in CI.
- We now collect "global" errors that may prevent any tests from running. We
  will be displaying these in our future CI platform.

## 0.18.0

_Released 11/27/2016_

**Notes:**

- We've created a new
  [example recipes repo](https://github.com/cypress-io/cypress-example-recipes)
  to show you common testing scenarios including how to use the new module
  support.

**Summary:**

- We've added automatic ES2015+, module, JSX, and CJSX support to all test
  files. This means you can use `require`, `import`, or `export` declarations to
  load other files. You can also use this to import your own application
  specific JavaScript modules and write unit tests for them. More of these
  details are yet to come.
  [See this issue](https://github.com/cypress-io/cypress/issues/318).
- You can now use your regularly installed `node_modules` in your project to do
  things like utilizing [`lodash`](https://lodash.com/) for utility functions or
  extending [`chai`](http://www.chaijs.com/) with assertion plugins.
- Because we're now processing the spec files prior to handing them off to the
  browser, this means we will display problems like syntax errors when something
  in the processing goes wrong. Additionally, we print these out during
  `cypress run`, so you're not stuck wondering what went wrong.

**Breaking Changes:**

- Previously, we auto-magically included all files within
  `cypress/support`.
  This has now [gone away](/app/references/error-messages#Support-file-missing-or-invalid) and we've
  simplified this to automatically including a single `cypress/support/index.js`
  file. That single file acts as the entry point meaning you should `import` or
  `require` the other support files you'd like to include. Although this is
  still "automatic" it's much less magical and we'll be updating all of our docs
  to reflect this. The purpose of `cypress/support` hasn't really changed, just
  the implementation of it has. We will automatically seed a
  `cypress/support/index.js` file for you (even on existing projects). The file
  location of `cypress/support/index.js` can be changed with the new
  `supportFile`
  option in your `cypress.json`. This feature can also be turned off by
  specifying `supportFile: false`.

**Features:**

- We now support ES2015+, modules, and JSX in all spec files. Fixes
  [#246](https://github.com/cypress-io/cypress/issues/246).
- Spec files may now be written as `.js`, `.jsx`, `.coffee`, or `cjsx` files.
- Test files with JS syntax errors are now
  [handled](/app/references/error-messages) and we provide a GUI that points
  to the exact line/column number. Additionally we print these out during
  `cypress run` and exit the process with `code 1`. Fixes
  [#293](https://github.com/cypress-io/cypress/issues/293).

**Misc:**

- We improved the logic around when and if we scaffold files on a new project.
  We're much smarter about this and not generating these forcibly every time.
  Fixes [#285](https://github.com/cypress-io/cypress/issues/285).
- Simplified handling of support files and made them less "magical". Fixes
  [#286](https://github.com/cypress-io/cypress/issues/286).
- Renamed `supportFolder` to
  [`supportFile`](/app/references/configuration#Testing-Type-Specific-Options)
  in `cypress.json`. We will automatically rename your `cypress.json` if this
  property was present on update.

## 0.17.12

_Released 11/21/2016_

**Bugfixes:**

- You no longer have to log in again after updating. Fixes
  [#305](https://github.com/cypress-io/cypress/issues/305).
- Updating in app now works again. Sorry about that. Fixes
  [#304](https://github.com/cypress-io/cypress/issues/304).
- Headless frame rate is now correctly set to `20` instead of resetting back to
  `60`. Fixes [#303](https://github.com/cypress-io/cypress/issues/303).
- We now automatically drop frames that the CPU cannot keep up with while video
  recording during `cypress run`. Previously we would buffer all frames in
  memory and it was possible to exhaust all memory due to the way that streaming
  backpressure works. Fixes
  [#302](https://github.com/cypress-io/cypress/issues/302).
- Fixed an edge case in the `driver` that could lead to memory leaks. This
  happened when Command Logs updated from previously run tests. Normally, in
  headless mode, we automatically remove references to purge memory after each
  test, but when logs were updated after this, their references were merged back
  in again and held onto forever. If you were seeing long Cypress runs die or
  eventually halt, this was likely the cause. We did extensive memory regression
  analysis on Cypress and could not find any more memory leaks. Fixes
  [#301](https://github.com/cypress-io/cypress/issues/301).

**Misc:**

- Improved [cypress run](/app/references/command-line#cypress-run) and
  `cypress ci` headless output. Fixes
  [#306](https://github.com/cypress-io/cypress/issues/306).
- Improved performance by preventing `snapshots` from being taken during
  headless runs.

## 0.17.11

_Released 11/16/2016_

**Roadmap:**

- The changes in version `0.17.11` below are in preparation
  for Cypress platform service: a portal where screenshots, videos, config,
  and logs of your builds are accessible.

**Overview:**

- `cypress ci` now uploads build assets to our servers after a test run
  completes. Additionally, it tracks the `config` settings used during the build
  and tracks each individual test failure.
- If you do _not_ want these assets to be tracked by Cypress, you need to switch
  to using [cypress run](/app/references/command-line#cypress-run). We will
  happily remove any build assets that are accidentally uploaded to us during
  the update transition.

**Features:**

- We now record videos during a headless run with both `cypress ci` and
  [cypress run](/app/references/command-line#cypress-run). Fixes
  [#229](https://github.com/cypress-io/cypress/issues/229).
- After completing `cypress ci`, we now upload build assets (such as
  `screenshots` and `videos`) to be used in our upcoming admin interface. This
  will enable you to review assets without having to touch your CI server. Fixes
  [#292](https://github.com/cypress-io/cypress/issues/292).

**Misc:**

- We've redesigned the headless run `stdout` to give you more details of the
  run, the stats after the run, what screenshots were taken, the video that was
  recorded, compression settings for the video, uploading asset progress, etc.
- Screenshot names now include their parent titles, and invalid file system
  characters are scrubbed. Fixes
  [#297](https://github.com/cypress-io/cypress/issues/297).
- We no longer artificially restrict the environment `cypress ci` can run in. It
  can now run _anywhere_. Fixes
  [#296](https://github.com/cypress-io/cypress/issues/296).
- We removed scaffolding any directories on a new project (during
  `cypress run`). Fixes
  [#295](https://github.com/cypress-io/cypress/issues/295).
- [cypress run](/app/references/command-line#cypress-run) no longer prompts the
  user for any kind of interaction, thus enabling you to use this in CI if you
  choose to do so. Fixes
  [#294](https://github.com/cypress-io/cypress/issues/294).
- There is a new [configuration](/app/references/configuration) property
  called: ~~`trashAssetsBeforeHeadlessRuns`~~ (This was changed to
  `trashAssetsBeforeRuns` in [3.0.0](#3-0-0)) that is set to `true` by default
  and will automatically clear out screenshots + videos folders before each run.
  These files are not deleted, they are just moved to your trash.
- There are several new [configuration](/app/references/configuration)
  properties for video recording: `videoRecording`, `videoCompression`, and
  `videosFolder`.

## 0.17.10

_Released 11/07/2016_

**Bugfixes:**

- Fixed switching between two different spec files from the desktop app causing
  `document.domain` to be wrong. Fixes
  [#276](https://github.com/cypress-io/cypress/issues/276).
- Fixed inserting the string `null` into [`cy.request()`](/api/commands/request)
  urls when providing a `baseUrl` in `cypress.json` while origin could not be
  determined. Fixes [#274](https://github.com/cypress-io/cypress/issues/274).
- Fixed incorrect error message on reverse visibility assertions. Fixes
  [#275](https://github.com/cypress-io/cypress/issues/275).

**Misc:**

- We've improved the way we inject content into `<html>` responses by filtering
  the underlying HTTP request headers. We no longer inject content into
  templates which were loaded via XHR. Fixes
  [#257](https://github.com/cypress-io/cypress/issues/257) and
  [#288](https://github.com/cypress-io/cypress/issues/288).

## 0.17.9

_Released 10/22/2016_

**Bugfixes:**

- Cypress now applies cookies to the browser which were cleared between
  redirects. Fixes [#224](https://github.com/cypress-io/cypress/issues/224).
- Snapshots now work even when `<html>` tag has invalid attributes. Fixes
  [#271](https://github.com/cypress-io/cypress/issues/271).
- Cypress no longer crashes on initial [`cy.visit()`](/api/commands/visit) when
  the 3rd party web server never ends the response. Fixes
  [#272](https://github.com/cypress-io/cypress/issues/272).

**Misc:**

- Changed default [`responseTimeout`](/app/references/configuration#Timeouts)
  from `20000` to `30000`.
- Changed default [`pageLoadTimeout`](/app/references/configuration#Timeouts)
  from `30000` to `60000`.
- The internal Cypress proxy now forcibly responds to requests taking longer
  than `responseTimeout`. Currently this sends back `text/html` with the
  `ETIMEDOUT` error, but this likely needs to be configurable. The reason we are
  now forcibly applying timeouts is to prevent `socket pooling exhaustion` where
  tests are running and a 3rd party server never responds to the request.

## 0.17.8

_Released 10/13/2016_

**Bugfixes:**

- Fixed `opener of undefined` errors due to `page load` events causing snapshots
  prior to the `load` event of the remote application. Thanks to everyone who
  helped pitched in on this one! Fixes
  [#258](https://github.com/cypress-io/cypress/issues/258).
- Cypress now correctly sets cookies with `expirationDate` in the past. Chrome
  did not handle these cookies as documented and our code did not take this into
  account. We also added a lot more `e2e` tests around this behavior. Fixes
  [#266](https://github.com/cypress-io/cypress/issues/266).
- We are now taking additional precautions to prevent Cypress from trashing the
  wrong folder during an upgrade (with an open project). This was actually fixed
  in `0.17.7` but the problem was is that during an update, the new version
  (which was fixed) was still being passed the wrong arguments from the older
  (broken) application. We've now upgraded `0.17.8` to detect this, and just use
  the expected default install location of Cypress. If you're concerned, just
  _close_ your currently open project before updating. Fixes
  [#265](https://github.com/cypress-io/cypress/issues/265).

**Misc:**

- When an in app update fails in `linux` we now provide instructions on how to
  manually update Cypress.
- We now properly take the `maxAge` cookie flag into account and give it
  preference over the `expires` flag as per the cookie spec.

## 0.17.7

_Released 10/12/2016_

**Features:**

- There is now a new
  [`chromeWebSecurity`](/app/references/configuration#Browser) option you can
  set in `cypress.json` to turn off Chrome's Web Security features. We've
  written a brand new reference that details why and how you could use this.
  Cypress Web Security. This option can be used
  for accessing `cross origin` `<iframes>` or if your application needs to test
  navigation across super domains. Fixes
  [#262](https://github.com/cypress-io/cypress/issues/262).

**Bugfixes:**

- We now capture `cross origin` errors correctly instead of these showing as
  `Uncaught DOMExceptions` in the console. Fixes
  [#261](https://github.com/cypress-io/cypress/issues/261).
- We no longer trash the wrong folder on OSX in-app updates (when a project is
  open). Sorry about this! Fixes
  [#260](https://github.com/cypress-io/cypress/issues/260).
- [`cy.visit()`](/api/commands/visit) urls with domain-like segments (which
  weren't actually the domain) no longer cause Cypress to think you're trying to
  navigate to a different superdomain. Fixes
  [#255](https://github.com/cypress-io/cypress/issues/255).

## 0.17.6

_Released 10/04/2016_

**Features:**

- Snapshots will now be _pinned_ when clicking on a command in the Command Log.
  This enables you to inspect the state of the DOM when the snapshot was taken.
  We've given you a new series of controls for turning off the element
  highlighting and hitboxes. Additionally we've given you the ability to
  manually click through each named snapshot when there are multiple states
  (like before and after). Fixes
  [#247](https://github.com/cypress-io/cypress/issues/247).

**Bugfixes:**

- Fixed a regression where tests that failed outside of a hook would incorrectly
  indicate themselves as a `before each` hook. In addition, in the default
  `spec`, reporter will now display the test name when a hook was the source of
  failure. Fixes [#253](https://github.com/cypress-io/cypress/issues/253).
- Fixed a deployment bug in the `core-desktop-gui`.
- We now prevent [`cy.visit()`](/api/commands/visit) from accidentally
  snapshotting twice.

**Misc:**

- [`cy.request()`](/api/commands/request) and
  [`cy.visit()`](/api/commands/visit) now correctly send `User-Agent` headers
  based on the current open browsing session. Fixes
  [#230](https://github.com/cypress-io/cypress/issues/230).

## 0.17.5

_Released 10/02/2016_

**Features:**

- We've added `JUnit` as a valid
  [built-in reporters](/app/tooling/reporters). Fixes
  [#178](https://github.com/cypress-io/cypress/issues/178).
- You can now
  [add or write your own custom reporters](/app/tooling/reporters). This
  means you can `npm install xyz-mocha-reporter` and we'll automatically
  correctly `require` that package. Alternatively you can write your own
  `xyz-custom_reporter.js` file. Fixes
  [#231](https://github.com/cypress-io/cypress/issues/231).
- The `reporter` can now be resized. We persist this state locally so it should
  "stick" between browser launches / app restarts. Fixes
  [#204](https://github.com/cypress-io/cypress/issues/204).
- Cypress now "remembers" the last browser you had open and will suggest opening
  that whenever a project is opened. Addresses
  [#193](https://github.com/cypress-io/cypress/issues/193).
- Instead of seeing `Script error.` - cross origins script errors are now
  handled specially and we throw a very long and exciting error explaining what
  just happened. Fixes [#241](https://github.com/cypress-io/cypress/issues/241).
- When uncaught errors are thrown in hooks we now indicate Mocha's behavior as
  part of the error - that it is skipping the remaining tests in the current
  suite. Fixes [#240](https://github.com/cypress-io/cypress/issues/240).

**Bugfixes:**

- The reporter now more intelligently scrolls to prevent commands from being cut
  off. Useful in screenshots / video recording. Fixes
  [#228](https://github.com/cypress-io/cypress/issues/228).
- We've improved the logic of how snapshots are restored so that it does not
  break the CSS when there were full page navigations in the test and the CSS
  changed. Fixes [#223](https://github.com/cypress-io/cypress/issues/223).
- Iframes are now correctly handled when we restore snapshots. Previously, we
  removed iframes which would change the page layout and the hitboxes'
  coordinates we drew were wrong. Now we insert iframe placeholders that prevent
  the page layout from changing. Fixes
  [#234](https://github.com/cypress-io/cypress/issues/234).
- Snapshot hitboxes no longer incorrectly draw for elements that are hidden.
  Fixes [#251](https://github.com/cypress-io/cypress/issues/251).
- Fixed a bug that caused commands to time out on subsequent tests whenever
  there was an uncaught error + an assertion conflict. Fixes
  [#238](https://github.com/cypress-io/cypress/issues/238).
- Fixed an edge case where assertions would incorrectly associate to a
  previously run assertion. Fixes
  [#252](https://github.com/cypress-io/cypress/issues/252).
- Cypress commands now correctly execute in `after` and `afterEach` hooks on a
  failed test. Previously they would only run on passing tests. Fixes
  [#203](https://github.com/cypress-io/cypress/issues/203).

**Misc:**

- We've bypassed Mocha's default uncaught error handling and replaced it with
  something much better - actually using the thrown error instances instead of
  creating a new arbitrary one. This means you'll see better stack traces on
  uncaught errors. Fixes
  [#193](https://github.com/cypress-io/cypress/issues/193).
- We've bypassed Mocha's default uncaught error handling in a `hook`. Normally
  this immediately ends the run. Instead we are skipping the remaining tests in
  the current suite. This prevents skipping potentially dozens or hundreds of
  tests downstream that are typically unrelated to the hook failure.
- We've updated `cypress-cli` package to `0.12.0`. You will need to download
  this new CLI version if you want to pass `--reporter-options`.
- Bumped the internal version of `mocha` from `2.2.1` to `2.4.5`.

## 0.17.4

_Released 09/12/2016_

**Breaking Changes:**

- Using subsequent [`cy.visit()`](/api/commands/visit)'s _in the same test_ will
  not necessarily force a full page refresh. If all that changed was the hash of
  a url, then the hash changes will take affect **without** a full page refresh.
  This matches the behavior of a real browser. Previously
  [`cy.visit()`](/api/commands/visit) always forced a full page refresh and this
  was not correct.

**Features:**

- Using [`cy.visit()`](/api/commands/visit) now acts _exactly_ how modifying the
  URL in a real browser works. This means that if you visit a url with a hash in
  it, instead of forcing a full page refresh, it will now modify the hash route
  as if you had manually changed it. This more accurately reflects real user
  behavior. Previously this was impossible to do with Cypress other than
  manually altering `window.location.hash`.

**Bugfixes:**

- Fixed a regression in [0.17.2](#0-17-2) which caused **separate** tests that were
  visiting the same URL not to actually visit the new URL and eventually time
  out. We've updated some of our internal QA processes around this because we
  rarely have regressions and they are a pretty big deal. Fixes
  [#225](https://github.com/cypress-io/cypress/issues/225).
- Fixed displaying `(null)` contentType when a
  [`cy.visit()`](/api/commands/visit) returned a `404` status code. We now only
  display `contentType` when one exists.

## 0.17.3

_Released 09/11/2016_

**Features:**

- When `visible` assertions such as `should('be.visible')` fail we now print the
  reason Cypress thought the element was invisible. Matches what Cypress prints
  out when attempting to interact with invisible elements. Fixes
  [#221](https://github.com/cypress-io/cypress/issues/221).

**Bugfixes:**

- Prevent `Host` header from having its port appended when request was for port
  `80` or `443` which lead to 3rd party reverse proxy problems such as with
  `zeit.co` hosting. Fixes
  [#222](https://github.com/cypress-io/cypress/issues/222).
- Send valid http response errors, and display new lines correctly. Fixes
  [#218](https://github.com/cypress-io/cypress/issues/218).
- Correctly inject on `5xx` http response codes. Fixes
  [#217](https://github.com/cypress-io/cypress/issues/217).
- Correctly inject on `4xx` and other bad http response codes when using Cypress
  as the file server. Fixes
  [#219](https://github.com/cypress-io/cypress/issues/219).
- Correctly inject on `gzip` errors from 3rd party servers doing unintended
  things. Fixes [#220](https://github.com/cypress-io/cypress/issues/220).

## 0.17.2

_Released 09/06/2016_

**Notes:**

- After this update if you are seeing `<iframe>` origin errors _please let us
  know_ by [opening an issue](https://github.com/cypress-io/cypress/issues/new).
  We will screen-share with you to diagnose the issue. We're no longer aware of
  any situation where this should happen, so if you're experiencing these bugs,
  please help us track them down.

**Features:**

- Attempting to [`cy.visit()`](/api/commands/visit) a non `text/html` resource
  will now throw a specific error message instead of bombing on page injection
  with an `<iframe`> origin error. You have to visit actual `html`, you cannot
  visit something like a `.json` or `.png`. If you're wanting to visit an API
  route on your back end that does something like set cookies (thus avoiding
  loading your UI) you can just use [`cy.request()`](/api/commands/request) for
  this since it will now automatically get and set cookies under the hood. Fixes
  [#211](https://github.com/cypress-io/cypress/issues/211).

**Bugfixes:**

- Fixed a regression in [0.17.1](#0-17-1) that was incorrectly setting `Cache` headers.
  This _could_ cause a situation where you received an `<iframe>` origin error.
  Additionally we now set `No-Cache` headers whenever we inject content, but
  otherwise respect the headers coming from web servers. When using Cypress as
  the file server, we set `etags` but prevent caching.
- Most likely fixed a bug that was crashing Cypress due to
  `Cannot set headers after they've been sent`. We were unable to write a test
  for this since we could not recreate the error, but analyzed how it _may_
  happen and fixed the code there.
  [open an issue](https://github.com/cypress-io/cypress/issues/new) if you see
  this error, it will be obvious since Cypress will literally crash.
- We stopped minifying `vendor.js` (for real this time). More optimizations to
  come around this.
- Prevented accidentally setting `domain` cookies when they were really
  `hostOnly` cookies, thus duplicating the number of cookies sent on requests.
  Kudos to [@bahmutov](https://github.com/bahmutov) for finding this one. Fixes
  [#207](https://github.com/cypress-io/cypress/issues/207).
- Fixed some edge cases in `cypress-core-extension` where it threw errors when
  attempting to `executeScript` on a tab with `about:blank` or `chrome://` urls.
- We've fixed some underlying issues with [`cy.go()`](/api/commands/go) during
  `cypress run`. It always worked fine in real Chrome. Previously there were
  some situations where it would not navigate forward / back correctly.

**Misc:**

- No longer force [`cy.visit()`](/api/commands/visit) to navigate to
  `about:blank` prior to navigating to the real url. Fixes
  [#208](https://github.com/cypress-io/cypress/issues/208).
- [`cy.writeFile()`](/api/commands/writefile) can now accept an empty string.
  Fixes [#206](https://github.com/cypress-io/cypress/issues/206).
- Improved error messages for [`cy.readFile()`](/api/commands/readfile) and
  [`cy.writeFile()`](/api/commands/writefile).
- The full file path is now included in console output for
  [`cy.readFile()`](/api/commands/readfile) and
  [`cy.writeFile()`](/api/commands/writefile).
- The [Kitchen Sink](https://github.com/cypress-io/cypress-example-kitchensink)
  and `example_spec.js` have been updated to reflect the newest changes and
  features of `0.17.1`.

## 0.17.1

_Released 08/31/2016_

**Features:**

- You can now pass keyboard modifiers such as `ctrl`, `cmd`, `shift`, and `alt`
  to [`.type()`](/api/commands/type). In addition we've added support for not
  "releasing" these keys so they can affect other actions such as
  [`.click()`](/api/commands/click). Addresses
  [#196](https://github.com/cypress-io/cypress/issues/196).
- You can now type into the `<body>` or `document` as opposed to previously
  _having_ to target a valid focusable element. This is useful in situations
  where you're testing keyboard shortcuts and do not want to target a specific
  element. Addresses [#150](https://github.com/cypress-io/cypress/issues/150).
- There is a new command [`cy.readFile()`](/api/commands/readfile) that reads
  files on your file system and changes the subject to the contents. Addresses
  [#179](https://github.com/cypress-io/cypress/issues/179).
- There is a new command [`cy.writeFile()`](/api/commands/writefile) that
  creates and/or writes contents to files on your file system. Addresses
  [#179](https://github.com/cypress-io/cypress/issues/179).

**Bugfixes:**

- [`defaultCommandTimeout`](/app/references/configuration#Timeouts) now works
  correctly. The driver was still referencing the old `commandTimeout` value.
- The `__cypress.initial` cookie should now be removed during any
  [`cy.visit()`](/api/commands/visit), which should fix some edge cases with the
  proxy accidentally injecting content when it shouldn't. We also added a ton
  more e2e tests covering these edge cases and other behavior.
- The proxy now restricts its injection to only `Content-Type: text/html`
  headers so it will not accidentally inject into the wrong responses.

**Misc:**

- All [`cy.fixture()`](/api/commands/fixture) extensions are now supported and
  Cypress will no longer throw on extensions it doesn't recognize. For known
  fixture extensions we'll continue to apply a default `encoding` and for
  everything else it will default to `utf8`. Fixes
  [#200](https://github.com/cypress-io/cypress/issues/200).
- [`cy.fixture()`](/api/commands/fixture) now accepts `encoding` as a 2nd
  optional argument.
- We now display a keyboard 'modifiers' column when clicking on a
  [`.type()`](/api/commands/type) in the Command Log.

## 0.17.0

_Released 08/30/2016_

**Overview:**

- The desktop application has been completely redesigned. We have moved from a
  tray application to a standard dock application. The list of projects is now
  in the same window as the list of tests in a project. As each test runs, the
  application highlights the currently running spec and displays the browser
  version running. The configuration of a project is now displayed in its own
  tab. There is now a Desktop Menu where you can logout, check for updates, or
  view help links.
- The test
  [runner](https://github.com/cypress-io/cypress/tree/develop/packages/runner)
  has been rebuilt from the ground up in [React.js](https://reactjs.org/). The
  left side of the runner called the
  [reporter](https://github.com/cypress-io/cypress/tree/develop/packages/reporter)
  is now a separate application. This, as well as other changes, markedly
  improved the performance of running tests. _Your tests will now run faster._
  This will also enable you to test your application in full screen.
  Additionally this paves the way for being able to spawn multiple browsers at
  once and synchronize testing across them. This also means we'll be able to
  support mobile browsers. The UI for doing this hasn't been implemented but the
  vast majority of the work to accomplish this is done now.
- We have rewritten the entire proxy layer of the Cypress server to finally fix
  all the problems with CORS.

**Breaking Changes:**

- You cannot [`cy.visit()`](/api/commands/visit) two different super domains
  within a single test. Example:
  `cy.visit('https://cypress.io').visit('https://anotherwebsite.com')`. There
  shouldn't be any reason you ever need to do this in a single test, if you do,
  you should make these two separate tests.

**Features:**

- _All CORS related issues should finally be fixed now._ Cypress now internally
  switches to the domain that you used in your
  [`cy.visit()`](/api/commands/visit). This means that the correct domain will
  display in the URL based on the application currently under test. Your
  application's code will run under the current domain at all times. Previously
  we implemented an endless amount of hacks and internal translations to figure
  out the domain you were _supposed_ to be on without actually being on the
  domain. This caused code to behave different and caused subtle issues. Those
  issues should now be resolved. The entire proxy layer has been rewritten to
  handle all HTTPS certificates flawlessly, continue to inject (even on HTTPS
  pages), and still know when to automatically bypass injection so you can open
  other tabs while testing in Cypress. These new proxy changes also unlock the
  ability to do things like allowing or blocking specific 3rd party domains, or
  even be able to stub not just XHR's but any kind of HTTP request.
- `window.fetch` now works correctly. Stubbing these does not yet work but it is
  now possible for us to implement stubbing in a future version. Addresses
  [#95](https://github.com/cypress-io/cypress/issues/95).
- The list of tests now automatically refresh when test files are renamed,
  deleted, or added. In addition, because the list of tests is now displayed in
  the desktop application, we now synchronize the state of the current running
  spec.
- [`cy.visit()`](/api/commands/visit) has better error messages. Cypress now
  programmatically determines why a [`cy.visit()`](/api/commands/visit) failed
  and gives you a ridiculously accurate error message. Addresses
  [#138](https://github.com/cypress-io/cypress/issues/138).
- [`cy.visit()`](/api/commands/visit) now displays redirects and any cookies
  set.
- The currently running test is now scrolled into view. This behavior can be
  turned off by scrolling in the Command Log or selecting to disable auto-scroll
  at the top of the Command Log. Addresses
  [#194](https://github.com/cypress-io/cypress/issues/194)
- Tests in the Command Log now automatically expand when specific commands take
  longer than `1000ms` to run. Previously when running more than 1 test we did
  not expand commands until a test failed. Now they will be expanded and
  automatically collapsed whenever a single command is taking a long time to
  finish.
- We now have full blown subdomain support. This means you can now navigate to a
  subdomain either directly via a [`cy.visit()`](/api/commands/visit) or by
  navigating in your application naturally (such as clicking an `<a>`).
- [`cy.request()`](/api/commands/request) now attaches and sets cookies
  transparently on the browser. Even though the browser will not physically make
  the request, we automatically apply outgoing cookies _as if_ the browser had
  made the request. Additionally we will automatically _set_ cookies on the
  browser based on the response. This means you can use
  [`cy.request()`](/api/commands/request) to bypass not just CORS but handle
  things like automatically logging in without having to manually perform these
  actions in the UI.
- We now handle HTTP request errors much better. Previously if your web server
  sent us back a `4xx` or `5xx` response we would automatically send back a
  `500`. Now we transparently pass these through.
- Improved dozens of error messages.
- [`.debug()`](/api/commands/debug) output has been improved, and you can now
  easily inspect the current command's subject.
- Clicking the URL in the header of the runner now opens that URL in a new tab.

**Bugfixes:**

- Fixed URL proxy issue with subdomains. Fixes
  [#183](https://github.com/cypress-io/cypress/issues/183).
- Viewport size maximum has been decreased from `3001px` to `3000px` and minimum
  has been increased from `199px` to `200px` to match error messages. Fixes
  [#189](https://github.com/cypress-io/cypress/issues/189)
- WebSockets are now correctly proxied through HTTPS and through subdomains
  different than the current domain under test.
- Stopped [`.debug()`](/api/commands/debug) from accidentally mutating subjects.
- Cypress now correctly injects and handles pages which are missing a `<head>`,
  a `<body`>, or even an `<html>` tag. Previously it would bomb on pages missing
  these tags.
- All commands with a long message (such as assertions) are automatically scaled
  down in font size and truncated properly. In addition, assertions will
  correctly bold the `expected` and `actual` values.

**Misc:**

- [cypress run](/app/references/command-line#cypress-run) no longer requires
  being logged in.
- Renamed configuration option `commandTimeout` to
  [`defaultCommandTimeout`](/app/references/configuration). Cypress will
  transparently rewrite this if you have it in your `cypress.json`, so you don't
  have to do anything.
- Renamed `onConsole` and `onRender` Command Log options to `consoleProps` and
  `renderProps`. We still support the older property names for backwards
  compatibility.
- Added support for a command's `message` or `renderProps.message` to use
  markdown.
- The default value of `port` within a project's global
  [configuration](/app/references/configuration) has changed from `2020` to
  now being a random open port. You can still configure a specific `port` if
  needed within the [configuration](/app/references/configuration).
- We have upgraded the `Chromium` that runs headlessly on
  [cypress run](/app/references/command-line#cypress-run) to version `51`.
- The internal version of `node` which is built into Cypress is now `6.1.0`.
- Cypress `.js` files are no longer minified to make them easier to debug.
- We are cleaning up internal `__cypress` cookies more so they won't get in the
  way of testing your application.
- We now opt into `gzip` handling instead of forcing requests to omit it.
- The runner is now responsive. It will correctly scale down URLs on smaller
  screen sizes instead of looking completely broken in CSS. We also designed a
  much better loading indicator.
- Added button to the reporter that focuses the Test Runner and shows the list
  of tests.
- The reporter now updates the duration every `100ms` instead of only when a
  test changes.
- In the reporter, suites that are pending or contain only pending tests have
  the blue "pending" indicator on the left instead of the white "processing"
  indicator.

## 0.16.5

_Released 07/31/2016_

**Bugfixes:**

- Force exit codes that are `null` to `0`. Fixes
  [#184](https://github.com/cypress-io/cypress/issues/184).

## 0.16.4

_Released 06/17/2016_

**Bugfixes:**

- Fixed regression caused by [0.16.2](#0-16-2) where a failed
  [`cy.contains()`](/api/commands/contains) would not be canceled and would
  continue to run and display failed assertions in between test runs (without a
  full page refresh). Fixes
  [#174](https://github.com/cypress-io/cypress/issues/174).

## 0.16.3

_Released 06/17/2016_

**Features:**

- `cy.route()` now accepts string glob patterns using
  [minimatch](https://github.com/isaacs/minimatch) under the hood. This means
  you can more easily route dynamic urls without using `regex`. Example:
  `cy.route('POST', '/users/*/comments', {})`.
- [`Cypress.minimatch`](/api/utilities/minimatch) is now exposed so you can
  easily test globbing patterns.
- [`.type()`](/api/commands/type) can now be used on non-input elements that
  have a `tabindex` attribute. Key events will fire but no text content will
  change and no input based events fire. Fixes
  [#172](https://github.com/cypress-io/cypress/issues/172).
- There is now an [`ignoreTestFiles`](/app/references/configuration)
  configuration option that accepts an array of `glob` patterns. This enables
  you to ignore extraneous spec files that may be created during a build
  process. The default pattern is `*.hot-update.js` which will ignore
  dynamically generated webpack hot module swapping files. Fixes
  [#159](https://github.com/cypress-io/cypress/issues/159).

**Bugfixes:**

- Fixed a bug where Cypress could get into a weird state and continuously error
  due to the `before:log` event not being properly disposed. Fixes
  [#173](https://github.com/cypress-io/cypress/issues/173).
- Fixed a bug where invalid UTF-8 characters were being set in XHR headers which
  caused XHR's to fail. We now properly encode and decode all values. Fixes
  [#168](https://github.com/cypress-io/cypress/issues/168).
- Nested directories under `cypress/support` no longer cause a `500` when tests
  run. This was due to Cypress not ignoring directories and trying to serve them
  as regular files. Fixes
  [#163](https://github.com/cypress-io/cypress/issues/163).
- Fixed situations where 3rd party libraries (such as
  [New Relic](https://newrelic.com/) were instrumenting XHR's identical to
  Cypress' implementation. This caused an infinite loop which would crash the
  browser. We've updated how we instrument XHR's to take this into account and
  deployed multiple fallbacks and strategies to prevent this kind of thing from
  happening in the future. Fixes
  [#166](https://github.com/cypress-io/cypress/issues/166).

**Misc:**

- `Cypress.Server.defaults()` now accepts a `urlMatchingOptions` option for
  passing options to [minimatch](https://github.com/isaacs/minimatch).
- [cypress run](/app/references/command-line#cypress-run) now exits with the
  number of test failures instead of always exiting with 0. This matches the
  same way `cypress ci` works. Fixes
  [#167](https://github.com/cypress-io/cypress/issues/167).
- In the [Cypress CLI tool](/app/references/command-line) package version
  `0.11.1`, you can now pass the `--spec` option to `cypress ci`. This enables
  you to run a specific spec file as opposed to all tests. Fixes
  [#161](https://github.com/cypress-io/cypress/issues/161).

## 0.16.2

_Released 06/11/2016_

**Features:**

- Added new [`cy.screenshot()`](/api/commands/screenshot) command which can take
  screenshots on demand.
- When running `cypress run` or in CI, Cypress will now automatically take a
  screenshot when a test fails. You can optionally turn this off by setting
  [`screenshotOnHeadlessFailure`](/app/references/configuration#Screenshots)
  to `false` in your configuration.
- Added new [`screenshotsFolder`](/app/references/configuration#Screenshots)
  configuration option with default of `cypress/screenshots`.
- When running in [Circle CI](https://circleci.com/), we automatically export
  screenshots as artifacts which makes them available directly in their web UI.
  If you're using Circle CI, you'll be able to see screenshots without doing
  anything. If you're using [Travis CI](https://travis-ci.org/), you'll need to
  upload artifacts to an `s3 bucket`. This is a small slice of what is coming to
  help diagnose and understand errors in CI. Also in `0.17.0` we will
  automatically scroll the tests and more intelligently and open / close test
  commands so you can visually see what happened. Currently you may not see the
  test command's failure in the Command Log due to the view not scrolling.
- Added new [`.each()`](/api/commands/each) command which iterates serially on a
  collection yielding the iteratee, the index, and the collection. Addresses
  [#156](https://github.com/cypress-io/cypress/issues/156).
- `cy.route()` can now accept a single function and/or you can pass a function
  to the `response` property. This allows you to lazily evaluate routing
  responses. Great for referencing fixtures. Addresses
  [#152](https://github.com/cypress-io/cypress/issues/152).
- [`cy.contains()`](/api/commands/contains) now accepts a regular expression.
  Addresses [#158](https://github.com/cypress-io/cypress/issues/158).
- [`.type()`](/api/commands/type) now accepts `{downarrow}` and `{uparrow}`. We
  do not move the caret but do fire all the proper events. Addresses
  [#157](https://github.com/cypress-io/cypress/issues/157).

**Bugfixes:**

- [`cy.exec()`](/api/commands/exec) now outputs additional `stderr` and `stdout`
  information. It additionally will automatically `source` your `$SHELL` which
  makes GUI apps behave as if they've been launched from your terminal. Fixes
  [#153](https://github.com/cypress-io/cypress/issues/153) and
  [#154](https://github.com/cypress-io/cypress/issues/154).
- [`.then()`](/api/commands/then) yielding nested subjects.
- [`cy.contains()`](/api/commands/contains) no longer returns the last element
  found when siblings both contain the same content. Fixes
  [#158](https://github.com/cypress-io/cypress/issues/158).
- Cypress no longer errors when you return a raw DOM element. It now correctly
  wraps this as the new subject.

**Misc:**

- [`cy.contains()`](/api/commands/contains) now provides an even more specific
  error message when it was scoped to a particular DOM element and contained a
  selector. Fixes [#160](https://github.com/cypress-io/cypress/issues/160).
- You will now see a very specific error message when we detect that you've
  mixed up `async` and `sync` code in a [`.then()`](/api/commands/then) callback
  function. An example would be queuing up a new cypress command but then
  synchronously returning a different value.

## 0.16.1

_Released 05/22/2016_

**Features:**

- [`Cypress.Cookies.debug()`](/api/cypress-api/cookies#Debug) now works again.
  Additionally it provides much more feedback than it used to.
- [`Cypress.Cookies.debug(true, {verbose: false})`](/api/cypress-api/cookies#Debug)
  option has been added to remove verbose cookie object logging.

**Bugfixes:**

- Copy / Paste now works when logging in on OSX. Fixes
  [#145](https://github.com/cypress-io/cypress/issues/145).
- Grammar: 'Login -> Log in'. Fixes
  [#146](https://github.com/cypress-io/cypress/issues/146).
- Cypress now uses the body instead of headers to send external requests. Fixes
  [#148](https://github.com/cypress-io/cypress/issues/148).
- When [`.then()`](/api/commands/then) throws this no longer prevents the next
  test from issuing any commands. Fixes
  [#149](https://github.com/cypress-io/cypress/issues/149).

**Misc:**

- Passing multiple arguments to [`.its()`](/api/commands/its) now throws and
  suggests you use [`.invoke()`](/api/commands/invoke). Fixes
  [#147](https://github.com/cypress-io/cypress/issues/147).

## 0.16.0

_Released 05/17/2016_

**Notes:**

- Updating through the Desktop App in **Linux** does not work. To update please
  run [cypress install](/app/references/command-line) from the command line.
- We are still updating the docs to reflect all of these changes.
- All users must _LOG IN AGAIN_ and re-add their projects. Sorry, we've changed
  the way we store local data.

**Overview:**

- `0.16.0` marks a significant change for Cypress. Before this we only issued
  commands using regular JavaScript and coordinated these with the back end
  server which is running. As of `0.16.0` we are now tapping into the underlying
  browser automation libraries which enable us to exceed the limitations of the
  JavaScript sandbox. This means we have total control over the browser for more
  powerful automation tooling. The downside is that we have only implemented
  these APIs for Chrome, and therefore running on multiple browsers will no
  longer work. This is a temporary setback as we'll be adding driver support for
  all of the other browsers over a period of time. You can read more about our
  browser management [here](/app/references/launching-browsers).

**Breaking Changes:**

- Running tests in Cypress now requires either Chrome, Chromium, or Canary to be
  installed on your OS environment. We intend to expand support for more
  browsers in the future, but for now, only these 3 are supported.
- Removed support for `Cypress.Cookies.get`, `Cypress.Cookies.set` and
  `Cypress.Cookies.remove`.
- Changed return of [`cy.getCookies()`](/api/commands/getcookies) to return an
  array of cookies, each with properties include name, value, etc.
- Changed return of [`cy.clearCookies()`](/api/commands/clearcookies) to return
  null (previously was returning Cookie that was cleared).
- [`Cypress.Cookies.debug()`](/api/cypress-api/cookies#Debug) has been
  temporarily disabled and will be re-enabled later.
- Browsers are spawned in a Cypress specific profile so that we can maintain a
  clean state apart of your regular browsing usage. You will notice that your
  extensions are no longer installed. This is on purpose. 3rd party extensions
  can often get in the way of Cypress and cause failures. However, developer
  specific extensions for Angular, Ember, and React do not cause any issues but
  you'll want to reinstall them. You only have to install them once and they
  will persist.
- The `whitelist` callback function of
  [`Cypress.Cookies.defaults()`](/api/cypress-api/cookies#History) now receives
  a `cookie object` instead of just the `cookies name` as a string.

**Features:**

- When a project is initially run from the desktop app, you can now choose to
  run Cypress in a select number of browsers including: Chrome, Chromium, or
  Canary (depending on what's installed on your OS).
- Browser sessions are spawned independently of your existing profiles and we've
  disabled things like password saving / prompting, JavaScript popup blocking,
  and other features which get in the way of testing. Read more
  [here](/app/references/launching-browsers)
- We automatically spawn Chrome in a **custom theme** so you can visually
  distinguish the difference between browser sessions spawned with Cypress vs
  your normal sessions. We know this may feel a little jarring because you're
  used to running Cypress alongside your other tabs. You will now see 2 chrome
  icons in your dock and you'll need to switch between them. We know this is
  problematic and confusing and we're looking into **changing the icon** of the
  Chrome running Cypress so it's easier to tell the Chrome sessions apart.
- Added new commands to handle getting, setting, and clearing cookies:
  [`cy.clearCookie()`](/api/commands/clearcookie),
  [`cy.getCookie()`](/api/commands/getcookie), and
  [`cy.setCookie()`](/api/commands/setcookie).
- All the `cy.cookie` commands have been upgraded to take new options and can do
  much more powerful things outside of the JavaScript sandbox.
- Upgraded the Chromium version running headlessly and in CI from `47` to `49`.
- There is a new [`cy.exec()`](/api/commands/exec) command that can execute any
  arbitrary system command. Additionally there is a new
  [`execTimeout`](/app/references/configuration#Timeouts) configuration
  option which is set to `60s` by default. Fixes
  [#126](https://github.com/cypress-io/cypress/issues/126).
- There is a new
  [`numTestsKeptInMemory`](/app/references/configuration#Global)
  configuration option that controls how many test's snapshots and command data
  is kept in memory while tests are running. Reducing this number will reduce
  the memory used in the browser while tests are running. Whatever this number
  is - is how many tests you can walk back in time when inspecting their
  snapshots and return values. Addresses
  [#142](https://github.com/cypress-io/cypress/issues/142).

**Bugfixes:**

- Cypress taskbar icon now displays correctly in OS X dark theme. Fixes
  [#132](https://github.com/cypress-io/cypress/issues/132).
- Fixed issue where server error's stack traces were being truncated in the
  Desktop app rendering them impossible to debug. Fixes
  [#133](https://github.com/cypress-io/cypress/issues/133).
- woff Fonts are now properly served from a local file system when using
  Cypress' web server. Fixes
  [#135](https://github.com/cypress-io/cypress/issues/135).
- When an element's center is not visible the error message now includes the
  stringified element in question, and not `undefined`.
- Typing into an `input[type=tel]` now works. Fixes
  [#141](https://github.com/cypress-io/cypress/issues/141).
- XHR's which have their `onload` handler replaced after `XHR#send` is called is
  now properly accounted for. Fixes
  [#143](https://github.com/cypress-io/cypress/issues/143).

**Misc:**

- XHR requests for `.svg` files are no longer shown in the Command Log by
  default. Addresses [#131](https://github.com/cypress-io/cypress/issues/131).
- Improved error when [`cy.request()`](/api/commands/request) fails. The request
  parameters are now included in the error. Addresses
  [#134](https://github.com/cypress-io/cypress/issues/134).
- When running a project in the new Cypress browser environment, if a new tab is
  opened, a message now displays discouraging the use of multiple tabs while
  testing. Addresses [#9](https://github.com/cypress-io/cypress/issues/9).
- When navigating directly to `localhost:2020` outside of the new Cypress
  browser environment, a message now displays discouraging running tests outside
  of the new Cypress browser environment.
- If, for whatever reason, Cypress cannot communicate with the automation
  servers, your testing session will immediately end and you'll have the ability
  to re-spawn the browser.
- [`cy.fixture()`](/api/commands/fixture) now has a default timeout of
  `responseTimeout` which is `20s`.
- [`cy.fixture()`](/api/commands/fixture) can now properly time out and accepts
  an `options` argument that can override its default timeout.
- Improved initial Desktop Application startup performance by about `1.5s`.
- We now correctly store local data in each operating system's correct
  `Application Data` area. This will be more resilient to upgrades in the
  future.
- Running Cypress in a linux VM on VirtualBox no longer displays "black
  screens".
- Our internal proxy no longer strips `HttpOnly` cookie flags.
- Improved command errors and normalized many of them. Fixes
  [#137](https://github.com/cypress-io/cypress/issues/137).
- JavaScript popup blocking is now disabled and will not interfere with running
  tests. Fixes [#125](https://github.com/cypress-io/cypress/issues/125).
- We now capture synchronous errors from XHR `onreadystatechange` handlers.

## 0.15.4

_Released 04/22/2016_

**Notes:**

- The docs have not yet been updated to reflect the changes to
  [`.its()`](/api/commands/its) and [`.invoke()`](/api/commands/invoke).

**Breaking Changes:**

- You can no longer improperly use [`.its()`](/api/commands/its) and
  [`.invoke()`](/api/commands/invoke). Using [`.invoke()`](/api/commands/invoke)
  on a non function property will result in an error that tells you how to write
  it properly using [`.its()`](/api/commands/its).

**Features:**

- Our [chat](https://gitter.im/cypress-io/cypress) has now been directly
  integrated into Cypress's nav. Clicking on the `chat` icon will immediately
  display the current gitter chat log.
- Added a new link to Options dropdown in Desktop app for "Chat" that goes to
  our [chat](https://gitter.im/cypress-io/cypress).
- [`.its()`](/api/commands/its) and [`.invoke()`](/api/commands/invoke) now
  support **dot separated** nested properties.
- Using [`.its()`](/api/commands/its) on a function will now allow you to access
  its properties instead of automatically calling a function. Fixes
  [#122](https://github.com/cypress-io/cypress/issues/122).
- Error messages and command messages for [`.its()`](/api/commands/its) and
  [`.invoke()`](/api/commands/invoke) have been improved.
- Adding an attribute called `data-cypress-ignore` to an element will prevent
  the internal Cypress proxy from rewriting any of its content or attributes.

**Bugfixes:**

- During `cypress run`, windows created with `window.open` will no longer
  physically display. They are now correctly headless. Fixes
  [#123](https://github.com/cypress-io/cypress/issues/123).
- The auto generated `example_spec.js` no longer errors on
  `cy.visit('app/index.html')` since that file would likely not locally exist.

**Misc:**

- Better error handling of unauthorized users attempting to login to Cypress
  with improved
  [Login documentation](/app/get-started/install-cypress).

## 0.15.3

_Released 04/10/2016_

**Features:**

- Cypress will now
  [display the **resolved** configuration values when you open a project](/app/references/configuration#Resolved-Configuration).
  This tells you the source of all config values.
- The latest version of the [Cypress CLI](/app/references/command-line) now
  accepts passing arguments to
  [cypress open](/app/references/command-line#cypress-open). Example:
  `cypress open --config waitForAnimations=false --env foo=bar,baz=quux`. This
  enables you to set and override local `cypress.json` configuration and
  additionally set environment variables.
- [Environment Variables](/app/references/environment-variables) that match any
  configuration keys (such as `pageLoadTimeout` or `watchForFileChanges`) now
  override their values. So, if you
  `export CYPRESS_WATCH_FOR_FILE_CHANGES=false` it will turn off this
  configuration option. Also note that we'll automatically normalize environment
  keys so: `CYPRESS_pageLoadTimeout=100000` and
  `CYPRESS_PAGE_LOAD_TIMEOUT=100000` will both be correctly handled. We'll also
  coerce values into `Boolean` or `Number` correctly.
- Cypress now correctly proxies WebSockets that are pointed at the local Cypress
  server (typically `localhost:2020`). Because most users use
  [Socket.io](http://socket.io/), when Socket.io could not correctly connect
  over WebSockets it would fall back to XHR polling. You may notice many less
  XHR requests in your command log (which is the intended behavior).
- The tray icon in OSX will now change colors. It will turn blue when you're
  running a Cypress project and red on any kind of failures such as syntax
  errors in `cypress.json`. It will turn back black when nothing is actively
  running.
- The title of your project is now the title of the browser tab (so you can
  easily tell Cypress tabs from one another).
- There is now a link to our [chat](https://gitter.im/cypress-io/cypress) in the
  navigation of the web app.

**Bugfixes:**

- The `-s` or `--spec` option now works correctly. You now must pass a relative
  or absolute path to your spec file. This is much less confusing, allows you to
  easily autocomplete entries from bash, and will support `unitFolder` later
  when it's added. Assuming you want to run a spec file that is located in
  `cypress/integration/foo_spec.js` you would pass:
  `cypress run --spec 'cypress/integration/foo_spec.js'`. Previously you could
  just pass `--spec foo_spec.js` which now no longer works (and was broken
  anyway). Fixes [#120](https://github.com/cypress-io/cypress/issues/120).

**Misc:**

- Open sourced another core repo:
  [Cypress Core Test Runner](https://github.com/cypress-io/cypress/tree/develop/packages/desktop-gui)
  which makes up the Cypress Desktop Application.
- Improved the
  [error message](https://github.com/cypress-io/cypress/issues/74#issuecomment-208422453)
  displayed to users on Windows attempting to download the Cypress Desktop app.

## 0.15.2

_Released 04/03/2016_

**Features:**

- The
  [error message when Cypress detects that a test has ended early](/app/references/error-messages)
  (there are still commands left in the queue) now displays a list of these
  commands with a much improved explanation.
- There is now a new [configuration option](/app/references/configuration):
  `watchForFileChanges` that, when set to `false` in the `cypress.json`, will
  prevent Cypress from attempting to watch for file changes and restart your
  tests.
- You can now set the default [`reporter`](/app/references/configuration) in
  `cypress.json` for use during `cypress run` or in CI.

**Bugfixes:**

- The [--reporter](/app/references/command-line#cypress-run) CLI option is now
  working again.
- the `teamcity` reporter is now also working again.

**Misc:**

- Updated favicon + logo mark

## 0.15.1

_Released 04/01/2016_

**Features:**

- [`cy.go()`](/api/commands/go) and [`cy.reload()`](/api/commands/reload) now
  accept a timeout option. Also, these commands would previously time out after
  the default `commandTimeout` of `4000ms`, but now they will timeout after
  `pageLoadTimeout` of `30000ms`.

**Bugfixes:**

- When an integration test file is unable to run and the `integrationFolder` is
  not the default path, the UI error now properly prints the integration test
  file's path by stripping off `integration` in the path. Fixes
  [#117](https://github.com/cypress-io/cypress/issues/117).
- `Cypress.Dom.isHidden()` will now throw error when it isn't passed a DOM
  element.

**Misc:**

- Renamed [configuration](/app/references/configuration) option
  `visitTimeout` to `pageLoadTimeout`. You don't need to change anything. If you
  were specifically setting `visitTimeout` in your `cypress.json` file it will
  be transparently rewritten `pageLoadTimeout` on the next server boot. This
  option was renamed because now multiple commands `cy.visit()`, `cy.go()`, and
  `cy.reload()` all depend on this timeout option.
- The Cypress tray icon has been updated. It's much better now.

## 0.15.0

_Released 03/28/2016_

**Overview:**

- As we get closer to a public release we've decided to focus on onboarding new
  users and new projects. We've made several breaking changes to help with this
  process.

**Features:**

- There is now an `example_spec.js` file that is scaffolded on new projects.
  This allows new users to instantly see Cypress successfully running on an
  example project and will answer many questions on writing your first tests.
  This `example_spec.js` file contains every single Cypress command and has
  approximately 70 tests.
- Added a welcome dialog for new projects that explains how Cypress scaffolds
  out its folder structure. This dialog will only display if Cypress detects
  that you haven't written any tests or changed the initial `example_spec.js`
  file. The welcome dialog will no longer display after you've changed or added
  any tests.
- Added the ability to click on file/folder links from within the Cypress webapp
  that will spawn your OS file/folder finder and show you where the files are
  located in your project.
- There is now a default `cypress` folder that contains your test files, a
  `fixtures` folder with an example fixture, and a `support` folder with example
  support files. Inside `cypress` there is an `integration` folder that will
  contain your integration tests.
- You can now turn off `supportFolder` and `fixturesFolder` by passing `false`
  in `cypress.json`. This will automatically remove the folders the next time
  you open your project in Cypress. Fixes
  [#102](https://github.com/cypress-io/cypress/issues/102).
- Restyled the tests list.

**Breaking Changes:**

- Cypress no longer looks at your `tests` directory for test files. Now, by
  default, it looks in the `cypress/integration` directory.
- We've removed the configuration option `testFolder` and renamed it to
  `integrationFolder` inside
  of the `cypress.json`.
- We've renamed the `cypress` npm package to be `cypress-cli`. You'll see a
  giant deprecation warning until your scripts have been updated to reference
  `cypress-cli`.. You can also uninstall the `cypress` npm package.
- Added new `fileServerFolder`
  configuration option that can mount a directory other than your project root
  when using Cypress as a web server.

**Misc:**

- Using [`.hover()`](/api/commands/hover) will provide a detailed error message
  with a link for working around hover constraints. Addresses
  [#10](https://github.com/cypress-io/cypress/issues/10)
- Internal routing errors in Cypress are now gracefully handled with
  `x-cypress-error` and `x-cypress-stack` set on response headers.
- Updated all of the repo names to be modular.

**What you need to do**:

- We did not write an automatic migration from `tests` -> `cypress`
- You need to manually move your existing test files from `tests` into
  `cypress/integration`.
- [Come into the chat](https://gitter.im/cypress-io/cypress) if you have any
  problems or need help.

More Info:

- Why did you change the default test folder to be `cypress/integration`.
- We are adding support for unit testing in the near future and decided that
  there needs to be a separation between `unit` and `integration` tests. The
  actual runner will handle these two sets of specs very differently. It's
  important to make the change now so when we do add support for unit tests, you
  only have to create a `unit` folder inside of your `cypress` folder.

## 0.14.3

_Released 03/20/2016_

**Features:**

- Added [`cy.getCookies()`](/api/commands/getcookies) command for easy
  chain-ability. Fixes [#103](https://github.com/cypress-io/cypress/issues/103).
- Cypress now outputs its version when passed the `--version` argument
- If you are not logged in on OSX, Cypress now issues a native system
  notification indicating to you that Cypress is running in your tray (many
  users often complained they could not tell Cypress was actually running)

**Bugfixes:**

- Handle clearing cookies better when they are created on a path other than `/`.
  Fixes [#104](https://github.com/cypress-io/cypress/issues/104).
- Issuing Cypress Commands inside of a Promise now works. Fixes
  [#111](https://github.com/cypress-io/cypress/issues/111).
- 'Add Project' dialog is no longer lost on blur. Fixes
  [#115](https://github.com/cypress-io/cypress/issues/115).
- Desktop windows that are transparent no longer lose their box shadow.

**Misc:**

- `cy.visit()` callback functions: `onBeforeLoad` and `onLoad` are now invoked
  with the current runnables context instead of with `cy`. This makes accessing
  properties in your tests much easier.

## 0.14.2

_Released 03/14/2016_

**Bugfixes:**

- Chaining more cy commands after using [`cy.wrap()`](/api/commands/wrap) now
  works. Fixes [#114](https://github.com/cypress-io/cypress/issues/114).
- Cypress now handles events property when a DOM element is removed during a
  `.click()` event. As per the spec, if `mousedown` causes element removal then
  `mouseup` and `click` and `focus` events will not be fired. Additionally if
  removal happens during `mouseup` then `click` event will not be fired. Also
  updated the `onConsole` groups to only display and indicate the events which
  actually fired. Fixes
  [#109](https://github.com/cypress-io/cypress/issues/109).

**Misc:**

- Removed `fa-refresh` icons next to suites and tests until this behavior has
  been reimplemented due to ID removal.
- Removed resetting the runnable timeout when a `page load` event resolves. This
  prevents an edge case where the next test may show as timed out during
  `cypress run`.

## 0.14.1

_Released 03/13/2016_

**Features:**

- Project ID's and `cypress.json` are now only generated once you start your
  Cypress server. Previously they were created initially when you choose the
  project folder. This now means you won't have to cleanup excess files if you
  accidentally select the wrong folder. Additionally you can now use Cypress
  100% offline. Previously the GUI would block until the project had an ID but
  this restriction has been lifted.

**Bugfixes:**

- The proxy server can now correctly proxy content on a `ipv6` host only. We had
  to patch node core to get this in, as by default node prefers `ipv4`. We now
  concurrently test all hosts via `dns.lookup` to find the first one that
  responds. This updated behavior now matches how other clients, like `curl`,
  and browsers resolve hosts. Fixes
  [#112](https://github.com/cypress-io/cypress/issues/112).
- Simplified how Cypress stores projects and fixed some edge cases where Cypress
  would send an outdated Project ID.
- Prevent server from opening and immediately closing + re-opening when project
  is missing a Project ID and one is generated.
- Using Cypress as a file server and serving a file that's part of a folder that
  has a name containing a space now works. Fixes
  [#113](https://github.com/cypress-io/cypress/issues/113).
- The existing `.cy` cache and settings are now correctly copied again after an
  app update.

**Misc:**

- Projects without an ID now error correctly when running in CI.
- When Cypress cannot proxy http content due to a software error it will attach
  a `x-cypress-error` and `x-cypress-stack` to the HTTP request for easy
  inspection and debugging.
- Cypress will now output its internal logger directly to the console when
  `CYPRESS_DEBUG` env var is set.
- Replaced Ruby / Compass with `node saas`.

## 0.14.0

_Released 03/08/2016_

**Summary:**

- This update represents mostly a lot of internal structure changes. We swapped
  out the underlying Desktop architecture and refactored all of the back end
  code to prepare for an open source release.
- If you choose to install Cypress from the
  [CLI Tool](/app/references/command-line) you must update to the latest version
  `0.9.1`. Just run `npm install -g cypress` and then you can run
  [cypress install](/app/references/command-line). You don't need to do anything
  if you update from within the Test Runner itself.

**Features:**

- The Desktop App has been re-skinned with misc GUI enhancements such as help
  text, popovers, clearer errors, better loading indicators, etc.
- The Desktop App's file size is now much smaller and unzips much faster. In the
  next release there will be a special `CI` build which removes the need to run
  Xvfb.
- Test IDs have been removed. You will no longer see Cypress insert IDs into
  your test files. This was a feature we implemented on day 1 - the idea being
  we could track test performance and do regression analysis. Unfortunately, it
  will be a long time before we actually implement the data science to make this
  happen. For the time being, IDs presented unnecessary technical complexity and
  challenges with no real upside. We recommend you remove all of your existing
  IDs. We've added a new command to the CLI tool that can do this in one shot.
  `cypress remove:ids` You may see IDs be reintroduced at a later time when we
  provide analytics.
- [`.then()`](/api/commands/then) now supports a `timeout` option. Fixes
  [#110](https://github.com/cypress-io/cypress/issues/110).
- All error messages from using the CLI have been rewritten and improved.
- Cypress will now automatically prompt you to add a project when using
  [cypress run](/app/references/command-line#cypress-run) on a project that has
  not yet been added.
- Domain cookies are now proxied better. There's still more work to do before
  they are 100% fixed but now most typical domain cookie scenarios should 'just
  work'.
- We've put together a new example repo called
  [The Kitchen Sink](https://github.com/cypress-io/examples-kitchen-sink). It
  demonstrates usage of every single Cypress command.

**Bugfixes:**

- Using [cypress run](/app/references/command-line#cypress-run) in OSX now works
  again.
- Added fs polling support to fix issues where Cypress would not detect file
  changes.
- Tests should reload inside of Cypress faster when they are changed.
- Better error messages when a command times out waiting for a promise to
  resolve. Fixes [#108](https://github.com/cypress-io/cypress/issues/108).
- [`cy.viewport('ipad-2')`](/api/commands/viewport) now displays by default in
  portrait. Landscape orientation is now properly landscape. Fixes
  [#100](https://github.com/cypress-io/cypress/issues/100).
- [`.click()`](/api/commands/click) will now properly click within an element's
  bounding box when a `position` option is passed and the calculated coordinates
  are a fraction. This previously forced the click to happen outside of the
  element. Fixes [#99](https://github.com/cypress-io/cypress/issues/99).
- `clientX` and `clientY` event properties are now correctly calculated for
  elements when the page is scrolled. Fixes
  [#98](https://github.com/cypress-io/cypress/issues/98).
- [`.check()`](/api/commands/check) and [`.uncheck()`](/api/commands/uncheck)
  now correctly filter down the subject when a value is passed as an option.
  Fixes [#94](https://github.com/cypress-io/cypress/issues/94).
- The Test Runner will now display your email address when you have not set a
  name in GitHub.

**Misc:**

- Improved element display in Command Log when multiple elements are part of an
  assertion. Fixes [#96](https://github.com/cypress-io/cypress/issues/96).
- [`cy.reload()`](/api/commands/reload) now returns the window object of the
  newly reloaded page. Fixes
  [#105](https://github.com/cypress-io/cypress/issues/105).

Known Issues:

- Clicking the 'reload' icon next to a test that does not have an ID will not
  work anymore. We're reworking this feature to work without the presence of
  IDs.

## 0.13.9

_Released 01/28/2016_

**Bugfixes:**

- Prevent regression with not automatically scaling the viewport to fit into the
  window size

**Misc:**

- Update links to match new [documentation](https://docs.cypress.io)
- [`.debug()`](/api/commands/debug) has been zipped up - it no longer logs
  confusing debugging information and now logs information about the previously
  run command.
- [`Cypress._`](/api/utilities/_), [`Cypress.$`](/api/utilities/$),
  [`Cypress.Promise`](/api/utilities/promise),
  [`Cypress.Blob`](/api/utilities/blob), `Cypress.moment` utilities have been
  moved off of `cy` and are now attached to `Cypress`. This is much more
  consistent with how the `cy` and `Cypress` APIs work. You can continue to use
  these objects off of `cy` but this has been deprecated and you will see a
  warning message.

## 0.13.8

_Released 01/24/2016_

**Features:**

- Added [`cy.reload()`](/api/commands/reload) command which does a full page
  refresh. This is the same as the user hitting the 'Reload' button.
  Additionally it matches the same argument signature as
  `window.location.reload`.

**Bugfixes:**

- Fixed situation where [`cy.viewport()`](/api/commands/viewport) would not
  restore correctly between tests. Previously this would cause subsequent tests
  to be issued at the modified `cy.viewport()`. Now viewport is automatically
  restored to the settings in your `cypress.json` file.

**Misc:**

- Using [`.its()`](/api/commands/its) on a function or
  [`.invoke()`](/api/commands/invoke) on a property now logs a deprecation
  warning. In the next major release this will become a full error. It is
  valuable to make a distinction whether you're operating on a property vs a
  function, and this change improves overall readability with less confusion.
- Cypress deprecations and warnings are now prefixed with: `Cypress Warning:` to
  indicate this message is coming from Cypress

## 0.13.7

_Released 01/17/2016_

**Bugfixes:**

- Prevent error during element stringification on `<svg>`. Fixes
  [#93](https://github.com/cypress-io/cypress/issues/93).
- Clarified on errors related to not being able to run in CI. Previously there
  was a "catch all" error indicating your Cypress API Key was invalid. This was
  oftentimes incorrect. More specific errors have been added.
- [`.type()`](/api/commands/type) has been upgraded to handle current selection
  ranges. Previously if an `<input>` had a selection range as Cypress began to
  type, this would be ignored. Cypress now takes this into account and will type
  over any selected text (as native typing would do).

**Misc:**

- All Cypress related services have been updated to use HTTPS. We are forcing
  HTTPS redirects for everything except for `api.cypress.io`, which would be a
  breaking change. By the next minor release we will force that as well. Once we
  make this change we will remove all versions below `0.13.7`. So make sure you
  **are not** locking the Cypress version when running in CI. We periodically
  remove old Cypress versions which have security flaws and this is an example
  of one.

## 0.13.6

_Released 01/09/2016_

**Features:**

- All commands now retry if the associated element is disabled until the element
  is no longer disabled. If the command times out a specific error message is
  now thrown.
- `cy.server()` and `cy.route()` now take an optional `onAbort` callback which
  fires anytime an XHR is aborted.

**Bugfixes:**

- Fixed edge case where XHR's which were already aborted were aborted a 2nd time
  when tests end. Cypress now only aborts currently running XHR's which have not
  already been aborted.
- When passing an array of aliases to [`cy.wait()`](/api/commands/wait) there
  was an edge case where an incorrect error message was being thrown. The
  incorrect values were a combination of the wrong alias, the wrong timeout
  value, or the wrong request or response. Now Cypress correctly provides all 3
  of these values.

## 0.13.5

_Released 01/03/2016_

**Features:**

- Added new command: [`cy.go()`](/api/commands/go) which accepts `back`,
  `forward`, or an arbitrary Number.
- [`cy.go()`](/api/commands/go) enables you to navigate back or forward in your
  history. Cypress intelligently handles situations where moving forward or back
  causing a full page refresh, and will wait for the new page to load before
  resolving and moving onto new commands. It additionally handles situations
  where a page load was not caused (such as hash routing) and will resolve
  immediately.

**Misc:**

- Using `{force404: false}` will now output a warning explaining this is now the
  default option and can be removed safely.

## 0.13.4

_Released 12/31/2015_

**Features:**

- Added `waitForAnimations` and `animationDistanceThreshold`
  [configuration options](/app/references/configuration#Actionability).
- Cypress now automatically detects and waits for an element which is animating
  to stop animating. The threshold that Cypress considers _animating_ is set to
  a distance of `5px` per `60fps`. In other words, if your element is moving too
  fast for a user to interact with, then Cypress considers the element animating
  and will wait until it finishes before attempting to interact with it. When we
  say 'interact' we mean apply command actions like
  [`.click()`](/api/commands/click), [`.select()`](/api/commands/select),
  [`.type()`](/api/commands/type), [`.check()`](/api/commands/check), etc.
  Waiting for animations prevents a series of edge cases and weird bugs where
  Cypress was interacting with elements **too** quickly which might cause
  undesired side effects in your application which are hard to track down. The
  downside to this implementation is that for every action Cypress must wait at
  least 2 run loops before applying actions. This slows down every action
  command by about `32ms`. If your app does not use animations you may wish to
  turn off this behavior in your `cypress.json` file.

**Bugfixes:**

- Prevent `undefined` error when attempting to [`.click()`](/api/commands/click)
  an element which is fixed position when it is covered by another element.
  Cypress now correctly provides why it cannot click the element in question.
  Fixes [#90](https://github.com/cypress-io/cypress/issues/90).
- Prevent infinite loop in edge cases when checking whether an element was
  hidden.

**Misc:**

- The default behavior of `cy.server()` has changed from `force404: true` to
  become `force404: false`. In other words, Cypress will no longer forcibly send
  XHR's to 404 status when these XHR's do not match any existing `cy.route()`.
  This change better aligns with predictable usage for most Cypress users.

## 0.13.3

_Released 12/25/2015_

**Notes:**

- Merry Christmas everyone ;-)

**Features:**

- Overhauled the entire subsystem dealing with an element's visibility state.
  Previously we were using jQuery's `.is(":visible")` selector which was
  ineffective at truly determining when an element is "visible". Our changes now
  differ significantly from jQuery, but they match what a real user would
  consider visible, and the rules are fairly easy to explain. In other words
  these rules should just "make sense".
- An element is considered visible if it can be "interactive" with a user. In
  other words, if the user is able to click, type, drag, or otherwise physically
  interact with the element it is considered visible.
- Because of the additional complexities of how Cypress considers an element
  `visible`, we now have added the **exact** reason why an element is not
  visible when throwing an error. This means you'll see errors detailing whether
  an element or its parents have `display: none`, `visibility: hidden`, or
  whether an element is considered hidden because its effective `width` or
  `height` is zero. Whatever the reason, Cypress will indicate why your element
  is considered hidden.
- Exposed `Cypress.Dom.isHidden` which holds the logic for determining an
  element's visibility. Modify this to change the rules.
- Upgraded [`.select()`](/api/commands/select) to automatically retry when the
  `<select>` is disabled, its matching `<option>` is disabled, or when Cypress
  cannot find a matching `<option>`. This more correctly aligns with the
  behavior of other actions like [`.click()`](/api/commands/click), which
  automatically retry until the element is ready to receive the action.

**Bugfixes:**

- Throw on [`.select()`](/api/commands/select) when it cannot find a matching
  `<option>`. Also throw when `<select>` or a matching `<option>` is disabled.
  Fixes [#91](https://github.com/cypress-io/cypress/issues/91).
- "Hidden" elements which actually displace height or width are now highlighted
  when restoring the DOM when a command is hovered.
- Margin on zero client width / client height is now displayed correctly on
  command hover and more accurately mimics the way Chrome Dev Tools highlights
  elements.
- Using `history.back`, `history.forward`, or `history.go` in CI or in headless
  mode now works again.

**Misc:**

- The updated hidden rules apply to all assertions like `should("be.hidden")`,
  and how Cypress indicates an element is hidden displays in the Command Log.
- Updated many error messages to be more explanatory and precise.
- Elements which are stringified during errors now indicate their text content
  (truncated to 10 characters) `<button>Save</button>` or whether they contain
  children elements by indicating an ellipsis `<div>...</div>`.
- The Routes instrument panel now displays the column: `Stubbed` instead of
  `Status`, which indicates whether a route is stubbing matching XHR's.

## 0.13.2

_Released 12/20/2015_

**Notes:**

- Docs have been updated for [`cy.wait()`](/api/commands/wait), `cy.route()` and
  `cy.server()` to reflect these changes.

**Features:**

- Added `responseTimeout` [configuration](/app/references/configuration)
  value.
- [`cy.wait()`](/api/commands/wait) has been upgraded to now use two separate
  `timeout` values. In previous versions [`cy.wait()`](/api/commands/wait) used
  the `commandTimeout` and would automatically time out if the XHR did not
  achieve a response in that time frame. Now [`cy.wait()`](/api/commands/wait)
  will go through two independent timeout phases. At first
  [`cy.wait()`](/api/commands/wait) will wait for an XHR to be requested which
  matches its route. It will wait up to the value configured with
  `requestTimeout` (default 5000ms). After it sees a matching request it will
  then go into `response` waiting mode. It will wait up to the value configured
  with `responseTimeout` (default 20000ms). When
  [`cy.wait()`](/api/commands/wait) fails you now receive a much better error
  message indicating exactly which phase failed. Whether a request was never
  sent out, or whether it timed out waiting for a response. This gives you the
  best of both worlds and prevents situations where Cypress was timing out on
  slow servers. By creating new configuration values: `requestTimeout` and
  `responseTimeout` you can now directly control this behavior without affecting
  other regular commands.

**Bugfixes:**

- Prevent removing trailing new lines on fixtures after formatting.
- Added cache buster to test files which forces them to be reloaded in the
  `Sources` panel after making modifications. In previous versions when test
  files were live reloaded Chrome would not display their new contents due to a
  bug in Dev Tools. We've now worked around this issue.

**Misc:**

- Removed `{stub: false}` option from `cy.server()` and `cy.route()`. Cypress
  will now log a deprecation warning when you use the this option. Removing this
  option helps simplify the API because now Cypress can figure out whether you
  really want to stub the route based on whether you've provided a response or
  not. If you have not provided a response, the default behavior will be to not
  stub. If you do provide a response, Cypress will stub the route.
- Repurposed `requestTimeout` to now mean the time we wait for an XHR to be
  requested. Changed [`cy.request()`](/api/commands/request) to now use
  `responseTimeout` configuration value.
- Updated many error messages to be more consistent.
- Added special error messages when elements cannot have actions applied to them
  with a suggestion to use `{force: true}`.

## 0.13.1

_Released 12/11/2015_

**Notes:**

- We are aware of issues running in CI with Linux builds, and are working
  through those issues.

**Bugfixes:**

- Prevent headless / CI from throwing errors on `history.pushState` and
  `history.replaceState`.
- Prevent edge case where `aliasing` in the Command Log was aliasing the wrong
  command
- Prevent XHR's from throwing errors on `arraybuffer` content. Properly set
  `xhr.responseBody` for `XML`, `blob`, and `arraybuffer`.
- Headless running is now fixed in OSX. This was due to a bug with app signing +
  unzipping via the CLI.

## 0.13.0

_Released 12/09/2015_

**Summary:**

- Though it may not look like much, this upgrade was a long time in the making.
  There were limitations in the way we were currently handling headless / CI
  builds which restricted our ability to make updates or fix bugs. Additionally
  CI runs would randomly crash for no good reason. We decided to split out the
  headless / CI process into its own independent Chromium application which is
  now independently controlled, and is much more reliable. This upgrade enables
  us to handle CI features coming down the pipe and was necessary for moving
  forward.

**Features:**

- Upgraded `Chromium` for headless and CI runs from `41` to `45`.
- You will now see better stack traces and errors during `cypress run` / in CI.
  No more `undefined is not a function` errors.
- Ported all links to use the new Cypress CDN.
- [Documentation to CLI](/app/references/command-line).

**Bugfixes:**

- New chromium upgrade prevents synchronous XHR freezes.
- New chromium upgrade fixes situation where extremely long CI runs would
  sometimes randomly crash.
- Fixed problem with rewriting content on elements which contained `<svg>`
  elements.

**Breaking Changes:**

- Temporarily ignoring the `--reporter` option for headless / CI runs. Currently
  it is locked to the `spec` reporter, which is the default. This will be fixed
  in the next few patch releases.
- ~~Accessing `window.history.go()`, `window.history.back()`,
  `window.history.forward()` will throw an error during `cypress run` / CI. This
  is a regression that will be fixed - hopefully very soon.~~ This is fixed in
  [0.13.3](#0-13-3)
- While this new Chromium application passes our internal tests, it may crop up
  other regressions we aren't aware of. If you're experiencing different
  behavior in CI vs running locally in Chrome, this may be an indication of
  these.

## 0.12.8

_Released 12/02/2015_

**Features:**

- There is now a new [Error Messages Page](/app/references/error-messages)
  which will provide additional explanation when you are getting errors from
  Cypress. These errors will be directly linked to (like how Angular provides
  errors).
- Instead of hard coding external documentation, we now link everything through
  a redirection portal. This will prevent any links / documentation from ever
  breaking due to reorganization or renaming.
- Cypress now throws a specific error message (with a link to further
  explanation) if you attempt to run commands outside of a test. Usually this
  happens accidentally when you write `cy.commands` inside of a `describe` or
  `context` block instead of the `it`. I've wasted too much time and almost
  bombed entire presentations / demos so I've finally stopped this from ever
  happening again. If you ever see this error message, trust me, you will
  forever thank me.
- The error message:
  `Cannot call cy.method() because the current subject has been removed or detached from the DOM.`
  has been rewritten to provide much clearer information on why this is
  happening, including a string representation of your DOM element. Additionally
  it will have its own error page dedicated to explaining how this happens and
  what you can do to prevent it.

**Misc:**

- Rewrote error message which is displayed when Cypress cannot parse your test /
  spec file. Now a list of suggestions are given and an external link is
  provided which further explains how this may happen.
- Clarified the "Default Message" page when you have not
  [`cy.visit()`](/api/commands/visit) your application yet.
- Ignored `.coffee`, `.scss`, `.less` XHR's from displaying in the Command Log.

## 0.12.7

_Released 11/30/2015_

**Bugfixes:**

- Prevent passing `{multiple: true}` incorrectly showing up in Command Log.
  Fixes [#88](https://github.com/cypress-io/cypress/issues/88).
- Properly allow resource like XHR's which have query params such as jquery's
  `{cache: false}` option.
- Correctly take into account `<base>` tag on XHR's. Fixes
  [#89](https://github.com/cypress-io/cypress/issues/89).

## 0.12.6

_Released 11/29/2015_

**Features:**

- There are now [Getting Started](/app/get-started/install-cypress)
  docs including [configuration](/app/references/configuration) for
  `cypress.json`
- Cypress now silently restarts the server whenever it detects a change to
  `cypress.json` - meaning you no longer have to manually reboot the server for
  changes to be picked up.
- There is a new [`Cypress.config`](/api/cypress-api/config) interface - akin to
  [`Cypress.env`](/api/cypress-api/env) which provides access to configuration
  values.

**Bugfixes:**

- Setup/Teardown code was not properly running on nested Mocha `before`hooks
  which caused the error: `The XHR server is unavailable or missing...`. Fixes
  [#80](https://github.com/cypress-io/cypress/issues/80) and
  [#86](https://github.com/cypress-io/cypress/issues/86).
- Prevent accidental mutation of `cy.server()` options when `cy.route()` was
  provided options. Fixes [#84](https://github.com/cypress-io/cypress/issues/84)
  and [#85](https://github.com/cypress-io/cypress/issues/85).
- Using [`cy.title()`](/api/commands/title) would incorrectly search the
  `<body>` for title elements, and is now restricted to only searching in the
  `<head>`
- Cross-Origin requests are now proxied by Cypress. In other words their URL's
  are transparently rewritten which bypasses CORS problems. This is a quick fix
  which should satisfy most of the problems users were having with CORS
  requests. However there is a much bigger change coming in `0.14.0` where the
  entire proxy layer will be rewritten to accommodate CORS, `window.fetch` and
  `domain cookies` flawlessly. As it stands Cypress is prone to errors in
  complex setups.

**Misc:**

- Exposed `visitTimeout` and `requestTimeout`
  [configuration](/app/references/configuration).
- Increased `visitTimeout` from `20s` to `30s`.
- [`.click()`](/api/commands/click) will now throw if you are attempting to
  click more than 1 element. Pass `{multiple: true}` to enable this behavior
  again. Each element will be clicked serially and inserted into the Command
  Log.

## 0.12.5

_Released 11/22/2015_

**Features:**

- Errors reading / writing `cypress.json` on project add are now displayed
  inline.

**Bugfixes:**

- Prevent app crashing when `cypress.json` could not be read or written to when
  adding a project.

**Misc:**

- App crashes now send a full stack trace (instead of 10 line truncation).
- Better error handling + error messages when trying to read / write from
  `cypress.json`.

## 0.12.4

_Released 11/19/2015_

**Features:**

- There is a new [`Cypress.Cookies`](/api/cypress-api/cookies) interface which
  enables you to `get`, `set`, and even `preserve` cookies throughout your test.
  Useful to preserve cookie-based sessions between your tests.
  [Documentation is written here](/api/cypress-api/cookies).

**Bugfixes:**

- Removed problematic `content-security-policy` headers
- Fixed situation where Cypress was not injected correctly when `<head>` tag had
  attributes
- Prevent fixtures from being accidentally overwritten and having their content
  blanked out. There was a very subtle chance due to node's async file writing
  that as a file was being written with a formatted fixture, that another call
  to the same fixture would read in at that exact moment. If this happened the
  2nd read would resolve with zero bytes, which would then end up rewriting the
  file back with zero bytes.

**Misc:**

- `alerts` are automatically accepted now and a message logs to the console.
- Added retina favicon. Fixes
  [#83](https://github.com/cypress-io/cypress/issues/83).
- Removed nested `cypress` object in the `cypress.json`. Existing `cypress.json`
  files are transparently rewritten on the next server boot, so you can check in
  the modified `cypress.json` and all will be well. Fixes
  [#82](https://github.com/cypress-io/cypress/issues/82).
- Improved performance of formatting fixtures.

## 0.12.3

_Released 11/04/2015_

**Bugfixes:**

- Prevent [`.pause()`](/api/commands/pause) from actually pausing during
  `cypress run`.
- Fix for [`cy.request()`](/api/commands/request) SSL issues when host
  certificates were self signed.

## 0.12.2

_Released 11/01/2015_

**Features:**

- There is now a `cy.cmd` and `cy.command` method which enables you to invoke
  commands by their string name. This is most useful when using _namespaced_
  custom commands. So `Cypress.addParentCommand("dashboard.setSlider", ...)` can
  be accessed by `cy.cmd("dashboard.setSlider", arg1, arg2)`. (Docs have not
  been written yet).
- `Environment Variable` support has been added and can be accessed in your
  tests with [`Cypress.env`](/api/cypress-api/env). The docs have been written
  [Environment Variable](/app/references/environment-variables) and
  [here](/api/cypress-api/env).

**Misc:**

- The URL property on all XHR's is now completely decoded, even on URLs which
  were originally encoded. The reason is for easier assertions and debugging.
  This URL property is specific to Cypress and does not actually affect the
  underlying XHR.

## 0.12.1

_Released 10/28/2015_

**Bugfixes:**

- `cy.route()` will no longer throw that a response is needed when using
  `cy.server({stub: false})`.
- Applying server defaults to `Cypress.Server.defaults({})` now works as
  documented.
- `onRequest` and `onResponse` can now be correctly set as permanent server
  defaults.
- XHR URL is now decoded to make assertions easier. Fixes
  [#75](https://github.com/cypress-io/cypress/issues/75).

## 0.12.0

_Released 10/23/2015_

**Summary:**

- XHR handling has been rewritten to be much more flexible, extensible, and
  future-proof.

**Breaking Changes:**

- The object you receive after waiting on an XHR alias is now different.
  Previously this was a `FakeXMLHttpRequest` object which came from Sinon.js.
  Now it is a special `XMLHttpRequest` object which comes from Cypress. You may
  need to rewrite some of your assertions but we've tried to keep the signatures
  as close as possible.
- The XHR's URL property will now always return you a
  `Fully Qualified Domain Name` including the origin, port, host, etc.
  Previously the URL property represented whatever the XHR was opened with.
  We've worked around this difference by when checking whether an XHR should be
  stubbed, the origin is tested both as present and omitted.

**Deprecations:**

- Accessing `requestJSON` or `responseJSON` on XHR objects is deprecated, and
  will be removed in the next version. Accessing those properties will throw a
  warning which explains how to rewrite these.
- `cy.respond` is _temporarily_ deprecated because the semantics of how this
  works is completely different and will require more work (mentioned later on)
  before this can be re-enabled again.

**Features:**

- All XHR's (regardless of whether they are stubbed or not) are now logged in
  the Command Log. Stubbed XHR's display as "XHR Stub" vs vanilla "XHR".
- Stubbed XHR's will now show up in the `Network Tab` in Dev Tools. In other
  words they will _really_ go out and you'll be able to inspect them just like
  regular XHRs.
- Regular XHR's can now be aliased and waited on without actually being stubbed
  by passing `{stub: false}` to the `cy.route()`.
- XHR's will continue to work correctly even _after_ a test ends. In previous
  versions, due to replacing the entire XHR object, your application would not
  work correctly after a test ended. This prevented you from "navigating around"
  and working with your app after the tests end.
- Servers can now be disabled in the middle of a test. Previously once a server
  was started all XHR's would be stubbed.
- You can now disable the force sending of `404` to all XHR's which are not
  stubbed. This allows you to mix and match, enabling some requests to be
  stubbed and others to hit your server and respond normally.
- The default XHR configuration can now be overwritten in a single area.
- Many new configuration options are available for controlling how XHR's are
  stubbed.
- XHR's now include an `Initiator` stack regardless of whether they're stubbed.
  The `Initiator` stack includes the stack which caused the XHR to be created
  and sent.
- The `onConsole` information related to an XHR has been updated to make it
  easier to understand why a route was or was not stubbed, and its associated
  request and response headers.
- Response headers on XHR stubs will now automatically set their `Content-Type`
  based on the stub response. Previously this would always set to the
  `Content-Type` to `application/json`. Now if you force a response to be text
  or html, the `Content-Type` response header will be set appropriately.
- You can now force other additional response headers to be sent on stubbed
  XHRs.
- XHR's now snapshot twice - when the request is made and when the response is
  returned.
- Removed sending `sinon` on every [`cy.visit()`](/api/commands/visit).
- The XHR object which is returned to you to via
  [`cy.wait()`](/api/commands/wait) is now more consistent with other return
  values such as [`cy.request()`](/api/commands/request). It should be much
  easier to work with `request body`, `request headers`, `response body` and
  `response headers`.

**Bugfixes:**

- Routes no longer display as duplicated in between test runs when `cy.server()`
  is started prior to a [`cy.visit()`](/api/commands/visit) and you cause a full
  page refresh, which caused all routes to be re-bound.
- Any issues related to `requestJSON` or `responseJSON` being duplicated are now
  fixed. Fixes [#65](https://github.com/cypress-io/cypress/issues/65).
- Fully Qualified XHR's which should be proxied are now correctly transparently
  rewritten to prevent CORS problems.
- `cy.route()` - `onRequest` and `onResponse` callbacks are now called with `cy`
  as the context.
- Filtering assets which should never be stubbed has been improved. Now `.jsx`
  templates pass-through correctly.
- CORS Network Errors are now correctly caught.

**Misc:**

- All `ng` based commands now display in the Command Log.
- The built in XHR response delay has been removed since now all requests really
  go over the HTTP stack, which inherently has its own delay. You can still
  optionally force responses to be delayed by a set amount.

**Almost there:**

- Support for the native `fetch` object.
- Configuration to automatically force Cypress to wait for outstanding XHR's
  (like it does for other Page Events). This would mean when testing more
  traditional apps without XHR stubbing, commands would automatically wait until
  all outstanding XHR's complete. The internal retry loop needs to be rewritten
  to make this possible, but the XHR architecture is now there.

## 0.11.13

_Released 10/08/2015_

**Bugfixes:**

- Prevent rejected promise from causing error about invalid API key during a CI
  run.

**Misc:**

- Better error handling of rejected promises.

## 0.11.12

_Released 10/07/2015_

**Features:**

- Snapshots can now be named and a command can have multiple snapshots.
- Multiple snapshots are now cycled automatically on hover, and the name of the
  snapshot is displayed.
- Most of the action commands now take multiple snapshots (giving you a precise
  look at an action prior to it happening, and then afterwards).

**Bugfixes:**

- Fixed situation where an `Uncaught Error` was not being properly handled.
  Cypress would incorrectly continue to retry commands instead of canceling
  them, which lead to incorrect errors downstream in other tests.
- Fixed situation where an error being thrown from an XHR was being improperly
  handled (in a slightly different way than the problem above).
- Stopped sending CI data when
  [cypress run](/app/references/command-line#cypress-run) was issued.

**Misc:**

- CSS Improvements

## 0.11.11

_Released 10/04/2015_

**Bugfixes:**

- Snapshots of [`.type()`](/api/commands/type) and
  [`.select()`](/api/commands/select) are no longer incorrect due to taking
  snapshots too early. Fixes
  [#22](https://github.com/cypress-io/cypress/issues/22).
- Passing `{force: true}` to [`.blur()`](/api/commands/blur) now logs correctly
  in the Command Log.

**Misc:**

- Added delays on some tooltips.
- The URL will now highlight in a yellow background during a revert DOM
  snapshot.
- Moved snapshot message to be affixed to the bottom of the remote app in
  preparation for cycling through multiple snapshots.
- Cleaned up the URL by removing some unused content.

## 0.11.10

_Released 10/04/2015_

**Features:**

- [`.blur()`](/api/commands/blur) now accepts `{force: true}` which removes
  error checking such as validating the element is currently in focus.

**Bugfixes:**

- [`.pause()`](/api/commands/pause) is now noop during
  [cypress run](/app/references/command-line#cypress-run) or `cypress ci`.

**Misc:**

- Removed `cy.inspect` command.
- Added Cypress logo to nav.
- CSS changes.

## 0.11.9

_Released 10/03/2015_

**Features:**

- Added `.zip` as acceptable fixture extension. Content is sent back as
  `base64`.
- Added docs to nav, consolidated `organize` into `tests`.
- Added favicon.
- Added tooltips everywhere.
- Created new debugging command: [`.pause()`](/api/commands/pause) which will
  pause executing commands and allow you to resume or step into the next command
  one at a time.
- You can now stop and restart tests from the UI.
- Added `cy.Blob` utilities for `blob` / `string` / `base64` conversion. Useful
  for manually handling uploads.

**Bugfixes:**

- "Cannot revert DOM while tests are running" now removes itself correctly.
- Aliased DOM objects are now correctly stored on the test's `ctx` as instances
  of **your** jQuery (if one exists).

**Misc:**

- Updated UI styles / tests list / run all.
- Fixed alt tray icon so it shows up correctly on click.

## 0.11.8

_Released 09/25/2015_

**Features:**

- Added [`cy.request()`](/api/commands/request) command which can issue XHR
  requests. The request is generated outside of the browser, and bypasses all
  CORS restrictions. Great for talking to an API for seeding, querying,
  building, etc.

**Bugfixes:**

- Prevented edge case with [`cy.fixture()`](/api/commands/fixture) where it
  would not be able to be canceled without throwing an unhandled rejection
  error.

## 0.11.7

_Released 09/25/2015_

**Bugfixes:**

- The debug window now works again.
- Changed `Linux` build strategy which fixes not saving the internal
  `.cy cache`. Also fixes not being able to update from the GUI. Fixes
  [#66](https://github.com/cypress-io/cypress/issues/66).

## 0.11.6

_Released 09/25/2015_

**Bugfixes:**

- Viewport is now properly restored to the default width / height on subsequent
  runs. Previously it would retain the last viewport size used until there was a
  new viewport command.
- [`cy.should('contain', '...')`](/api/commands/should) now correctly escapes
  quotes and single quotes.
- Assertion messages are no longer truncated, and instead will scale down by
  reducing the `font-size` and `line-height` after they exceed 110 characters.
  So you'll now always see the full assertion message.
- Fixed some scenarios where assertions would not be logged as a child command.
- Assertions based around the `window` or `document` object no longer cause Chai
  to bomb on formatting their object structures (due to cyclic references) and
  instead now will show up as `<window>` and `<document>`.

**Misc:**

- [`cy.window()`](/api/commands/window) now logs out to the `Command Log` and
  additionally verifies upcoming assertions.
- [`cy.document()`](/api/commands/document) now logs out to the `Command Log`
  and additionally verifies upcoming assertions.
- Removed `numElements` label on assertions which indicated the number of
  elements found if > 1. This was annoying and redundant since the inked command
  already had this number.

## 0.11.5

_Released 09/20/2015_

**Features:**

- The `Linux` version of Cypress now works correctly for GUI Desktop versions
  (tested on Ubuntu Desktop). Previously it would only worked during
  `cypress run` in server versions. The `tray` used in OSX does not work with
  the `Linux`, so in `Linux` we just use a standard window + menu.
- Added Desktop Icon.

**Bugfixes:**

- Cypress now forces the initial [`cy.visit()`](/api/commands/visit) not to be
  cached by the browser. This was incorrectly being cached which meant when you
  changed the [`cy.visit()`](/api/commands/visit) it would not actually go out
  and fetch the new contents. Previously you had to check `Disable Cache` in the
  `Network Tab` inside of Chrome to prevent this bug. Unfortunately this has a
  significant performance drawback. If you use a
  [`cy.visit()`](/api/commands/visit) before each test you will notice a degrade
  in performance because this request is no longer cached. This is a temporary
  problem until Cypress implements a more sophisticated caching strategy which
  optimizes these concerns. There is a lot to improve in this arena but it will
  take more time before it's implemented.
- [`.should()`](/api/commands/should) will no longer throw an error when it is
  used as a `parent command` and has a callback function signature, and that
  callback function throws outside of an assertion. Instead now it logs
  correctly, handles the error, and displays this error for you.

**Misc:**

- Many additional tests added to the multi-os deployment process.
- When Cypress opens other windows they are now auto-focused.

## 0.11.4

_Released 09/17/2015_

**Features:**

- [`.should()`](/api/commands/should) now accepts a callback function which will
  be retried until it does not throw. The callback function will be retried in
  the exact same way as passing regular string-based chainers to
  [`.should()`](/api/commands/should). Having a callback function gives you an
  opportunity to _massage_ the expected subject such as comparing multiple
  elements, creating an array of text or classes, etc.

**Deprecations:**

- `cy.wait(function)` has been deprecated and you can safely rename this command
  to [`.should()`](/api/commands/should).

**Misc:**

- All of the docs surrounding
  [assertions](/app/core-concepts/introduction-to-cypress#Assertions),
  [`.should()`](/api/commands/should), and [`.and()`](/api/commands/and) have
  been updated to reflect the new API.

## 0.11.3

_Released 09/16/2015_

**Features:**

- When XHR's are aborted Cypress will display the stack trace indicating where
  in your app the XHR was aborted. Additionally it will display as `(aborted)`
  in the Command Log.

**Bugfixes:**

- XHR's will no longer be ended early and display no status as if there was no
  response. Fixes [#63](https://github.com/cypress-io/cypress/issues/63).
- XHR's which are aborted no longer cause an `INVALID_STATE_ERR` to be thrown.
  Fixes [#62](https://github.com/cypress-io/cypress/issues/62) and
  [#34](https://github.com/cypress-io/cypress/issues/34).
- Cypress will no longer incorrectly revert to a previous test run's snapshot
  when tests are re-run.

## 0.11.2

_Released 09/14/2015_

**Bugfixes:**

- Prevented bug where the assertion message: `expected <x> element to exist`
  would log over and over again when Cypress retried querying for a DOM element.

**Misc:**

- [`.root()`](/api/commands/root) now outputs its subject when clicking on its
  command log. Fixes [#55](https://github.com/cypress-io/cypress/issues/55).

## 0.11.1

_Released 09/14/2015_

**Bugfixes:**

- Utilizing `cy.server()` across multiple tests before a
  [`cy.visit()`](/api/commands/visit) now works correctly. As a side effect now
  Cypress will rebind both the `server` and all `routes` **whenever** the remote
  window is reloaded (for whatever reason) - even during a test itself. This
  means you can navigate between pages without ever having to restart the server
  or routes (they will automatically rebind) when the window loads. Fixes
  [#59](https://github.com/cypress-io/cypress/issues/59).

**Misc:**

- Providing a "number-string" as in: `should("have.length", "1")` will no longer
  throw an error.
- Internal API changes for `$Commands`.

## 0.11.0

_Released 09/13/2015_

**Summary:**

- This release marks a major change in the underlying algorithms used to prevent
  testing flake. It is a major goal of Cypress to combat and prevent **all**
  test flake. These algorithm changes go a long way towards making this a
  reality, and have been months in the making.
- Cypress can now predict upcoming assertions and modifies its behavior until
  the intended state has been reached.
- Command options `exist` / `visible` / `length` have been deprecated, these
  were confusing and limiting, and the same result can now be achieved using
  normal assertions. The end result is much more robust and much easier to
  understand.

**Features:**

- Commands which precede assertions will now look downstream at those assertions
  and not resolve until their subject's state passes all assertions. Previously
  this was **sort of** implemented using _Command Options_ and the `eventually`
  flag, but now this is the default behavior. _Command Options_ only worked on
  DOM-based subjects, and now the new assertion verification works on everything
  else (including RL-based commands, etc). What this means is that Cypress can
  predict what you are requesting and automatically modifies its behavior until
  this state is reached. This prevents test brittleness / random test flake.
  Additionally this removes ever having to use
  [`cy.wait(Number)`](/api/commands/wait) or `cy.wait(Function)` (though this is
  still a valid command). As a side effect, you will now see commands + their
  assertions in the spinning pending blue state. When assertions fail their
  associated command also fails at the same time. This visually represents the
  coupling between these two concepts. Another side effect is that `timeout`
  options do not need to be provided on the succeeding assertions, and can
  instead just be provided on the proceeding command. All of the coupled
  assertions will automatically be retried to the maximum `timeout` setting.
  Fixes [#43](https://github.com/cypress-io/cypress/issues/43).
- Action commands will now insert an artificial delay after resolving to enable
  modern JavaScript frameworks time to _flush_ their run loops. snapshots are
  delayed until after the action, resulting in more accurate snapshots because
  JavaScript frameworks would not process these DOM events until `N`
  milliseconds after they occurred. This has the unfortunate side effect of
  _decreasing_ performance by about _5-10%_ but the end result is that it is
  much easier to debug and Cypress is less prone to flake caused by modern
  JavaScript frameworks. This change comes after collecting many data points and
  this was one of the easiest changes that help reduce flake. For users that
  don't use the latest and greatest JavaScript frameworks, this action delay can
  be reduced through `cypress.json` which may speed up large test suites.
- Aliasing custom commands now intelligently figures out where to apply the
  alias without being specified inside of the actual custom command.
- The algorithm for replaying aliased commands is now much more accurate,
  handles stale element references better, and will not replay commands which
  have a side effect (like action commands). The end result is Cypress will now
  almost always find the desired element by determining the minimum number of
  re-queries and is not susceptible to stale element references. Additionally
  using assertions on aliased elements now works (where previously using a
  _Command Option_ on an alias would just be ignored. This was very difficult to
  implement but should be 100% solid. Fixes
  [#36](https://github.com/cypress-io/cypress/issues/36).
- Assertions which actually produced 2 assertions (under the hood) such as
  `should('have.attr', 'href', '/users/1')` will now only log the 2nd assertion,
  unless the first fails.
- Previously using `eventually.have.length` was impossible (and this would throw
  an error), but now this works as you'd expect with the default
  `should('have.length')`.

**Bugfixes:**

- Aliased commands now correctly output a command log again when they are
  replayed.
- Assertions that involved an `{exp}` property are no longer incorrectly
  substituted with the `#{this}` subject.
- Removed special logic for _Angular_ which tapped into its digest cycle for
  queueing commands. This had unpredictable results when there was n `interval`
  set, and is now superseded by the new queueing system anyway (which is more
  performant).
- `Sinon's` formatting of failed `spy` or `stub` calls is horrendously
  non-performant and would sometimes choke the CPU for several seconds. This
  formatting has been completely removed and will be replaced by something less
  outrageous later on. At the moment you can still use the built in Cypress
  debugging (clicking on a command log, etc) to see what the actual values were.
  Fixes [#18](https://github.com/cypress-io/cypress/issues/18).

**Misc:**

- The internal retry loop of Cypress now runs at `60fps`, instead of `20fps`.
- Cypress overrides chai's default inspection function for DOM elements meaning
  instead of seeing `{ Object (0, length, ...) }` you will now see the nicely
  formatted Cypress DOM element like: `<button#primary.btn-large>`.
- Cypress now overrides chai's `match` chainer and provides a specific error
  message when a non `regex` value is provided. Fixes
  [#58](https://github.com/cypress-io/cypress/issues/58).
- Cypress now handles `length` and `exist` assertion chainers in a very specific
  way, providing a detailed message on failure, and utomatically slices out any
  stale element references.
- The `contain` assertion chainer from `chai-jquery` has been extended to match
  the same selector logic as [`cy.contains()`](/api/commands/contains) - meaning
  it now checks the `value` of `input[type=submit]`.
- Tweaked the label for displaying the number of elements a command resolved
  with (now displays 0 differently than > 1).
- Removed the `eventually` flag in assertions as now this is the default
  behavior on normal assertions.
- Deprecated all _Command Options_. You will see a very nice and simple error
  message explaining how to convert these to assertions.
- [`.within()`](/api/commands/within) can now be silenced with `{log: false}`.
- Many error messages have been rewritten to be much more fluent and easier to
  understand.

**Other News:**

- Cypress is currently seeking to raise a Series A. This will enable us to grow
  the team and speed up development but seeking it has come at a cost for current
  development speed. If you have any VC connections
  [please send them our way](mailto:support@cypress.io).

## 0.10.8

_Released 08/21/2015_

**Features:**

- Reporters in CI can now be specified.
- Added `teamcity` reporter.

## 0.10.7

_Released 08/16/2015_

**Features:**

- `port` can now be specified as a CLI argument and will override any values
  stored in `cypress.json`.

**Misc:**

- When running through the CLI, Cypress will now display an error if the
  server's port is currently in use. Previously this would not output an error
  and the process would just hang.

## 0.10.6

_Released 08/15/2015_

**Bugfixes:**

- Fixed edge case where Cypress would not correctly handle `POST` or `PUT`
  requests with a JSON body. These requests would just hang and eventually time
  out.

**Misc:**

- Project ID's can be programmatically set now.

## 0.10.5

_Released 08/13/2015_

**Bugfixes:**

- Running a specific test won't open/close immediately when starting up (fixes
  weird flickering effect).
- [`.check()`](/api/commands/check) and [`.uncheck()`](/api/commands/uncheck)
  commands will now correctly "end" even if they were `noop` due to the element
  already being in a checked or unchecked state.

**Misc:**

- Currently running tests now displays a spinner to indicate they are currently
  running.
- Optimized performance of command lists.
- Commands which were silenced with `{log: false}` will now always display in
  the Command Log if they were part of a replayed chain of commands due to an
  alias reference becoming stale. Previously they would not display which was
  very confusing.
- Sinon.JS is no longer minified.

## 0.10.4

_Released 08/11/2015_

**Bugfixes:**

- The OSX Cypress App was not being properly signed (since 0.10.0) due to an
  oversight in our deployment process. This has been fixed now and additional
  checks have been added to ensure the deployed version is properly signed.
  Updating within the app was unaffected. This bug only effected fresh downloads
  from the internet.
- Errors / crashes encountered when updating to newer versions through the app
  should be fixed now.

## 0.10.3

_Released 08/10/2015_

**Bugfixes:**

- Cypress Errors in `hooks` (`beforeEach`, etc) will no longer cause Mocha to
  fire its `end` event thus ending the entire run. In CI, this would cause the
  test suite to end early. Uncaught Mocha errors will however continue this
  behavior. Cypress does not yet have a "skipped" visual state for tests which
  were skipped, so at the moment it may look a little strange and unpredictable.

**Misc:**

- Tweaked clicking algorithm to re-verify an elements visibility anytime the
  click retries its `retry` logic. Previously this check only happened once at
  the beginning of the click.
- In CI, the window size (not the viewport) has been changed from `1024x768` to
  `1280x720`. This will only affect `screenshot` artifacts which are taken
  automatically with [`cy.screenshot()`](/api/commands/screenshot) (coming soon)
  or whenever a test fails (also coming soon).

## 0.10.2

_Released 08/10/2015_

**Bugfixes:**

- Memory optimizations in CI.
- Reduce noise in logs.
- Prevented external `NODE_ENV` mutations causing problems in CI.

**Misc:**

- Better error tracing.

## 0.10.1

_Released 08/07/2015_

**Bugfixes:**

- Fixed missing dependency for CI.

**Misc:**

- Cypress now logs out your project's API key on a failed CI run.

## 0.10.0

_Released 08/06/2015_

**Summary:**

- Cypress is now able to run all the tests, run in the terminal, and includes
  support for Linux and CI. Additionally, most of the functionality of he GUI
  Desktop App can now be accessed through command line arguments.
- Because each operating system requires a specific build of Cypress - a new CLI
  tool has been created which abstracts away these differences and orchestrates
  the Desktop App regardless of which OS you are running.
- This
  [CLI tool is now published on npm](https://www.npmjs.com/package/cypress),
  though the documentation still needs to be written.
- There is now a download service to access the latest version of Cypress and
  previous versions.
- Cypress aims not only to make it easier to write tests, but after you build a
  test harness, it will make it easier to dive into failed tests (hat run in
  CI). This release paves the way for providing after-run results and allowing
  you to dive into those failures.

**Breaking Changes:**

- Due to security upgrades, adding projects in previous versions will no longer
  work. Upgrade and everything should be okay.

**Features:**

- The latest version of Cypress can be downloaded here:
  [http://download.cypress.io/latest](http://download.cypress.io/latest).
- Cypress can alternatively be downloaded / installed / managed through the CLI
  utility.
- Cypress can now be run through the terminal.
- You can now run all of your tests inside of the GUI App.
- You can use the CLI tool to run Cypress in CI. The documentation for this
  needs to be written, but it will be very simple to do. You will probably only
  have to write 2 lines in your CI scripts to run Cypress.
- You can configure CI to use any reporter built into Mocha, and additionally we
  are adding JUnit XML output (for Jenkins) as a built in default.
- You can write your own custom reporter which Cypress can use in CI.
- Console output from your apps is suppressed while running in the terminal.

**Bugfixes:**

- Several security problems with projects have been closed in preparation for
  running in CI.
- Extensive memory profiling has been done and Cypress has implemented several
  strategies for aggressively causing garbage collection. The debugging tools
  (which allow you to walk back in time through DOM snapshots, or access objects
  from previous tests) could exhaust all available memory in previous versions.
  This likely never affected most users, but if a user ran 1000's of tests
  (which have been written in Cypress) it would bomb. Now Cypress only stores
  data for up to 50 tests, and will begin purging data past that. When run in
  the terminal, Cypress doesn't apply any of its debugging tools, so CI will be
  unaffected.
- Several instances of memory leaks were plugged up.

**Misc:**

- Everything except for the `cypress driver` is now minified.
- Some users have reported problems upgrading previous versions. This is because
  we changed the name from "cypress" to "Cypress" including some binaries. If
  your upgrade does not finish you can redownload the latest version of Cypress
  or use the CLI tool to reinstall it.
- Our build and testing processes have been upgraded to accommodate Linux
  builds.
- Sinon.JS object formatting during errors has been suppressed (when using
  spies/stubs) due to its horrendous performance when comparing deeply nested
  objects. This means you won't see the (mostly) useless error output from
  Sinon, but given Cypress debugging tools you can still inspect objects and
  figure out what went wrong.

## 0.9.6

_Released 07/27/2015_

**Bugfixes:**

- Fixed server crash on improperly handled proxy error.
- Upgraded logic to redirect back to the Cypress client app on manual URL
  changes.

## 0.9.5

_Released 07/14/2015_

**Features:**

- [`.click()`](/api/commands/click), [`.type()`](/api/commands/type),
  [`.clear()`](/api/commands/clear), [`.select()`](/api/commands/select),
  [`.check()`](/api/commands/check), [`.uncheck()`](/api/commands/uncheck) now
  will wait for the subject to automatically become visible instead of throwing
  immediately if the element is not in a visible state.

**Misc:**

- Swapped out ugly nonsense `refresh` icon to `square-o` to represent a test
  which has not run yet.

## 0.9.4

_Released 07/06/2015_

**Features:**

- [`cy.contains()`](/api/commands/contains), [`cy.get()`](/api/commands/get),
  and `traversal commands` will now all log out heir last known `$el` on
  failure. This means the `$el` will be highlight during Command Log hovering,
  and will display in the console on click. his should make debugging failed DOM
  based commands much easier. Fixes
  [#52](https://github.com/cypress-io/cypress/issues/52).

**Bugfixes:**

- Fixed edge case with [`cy.contains()`](/api/commands/contains) and command
  options `visible` and `exist` where it would always fail even though the
  matched element was in the correct state.

**Misc:**

- [`cy.contains()`](/api/commands/contains) now throws when provided the command
  option: `length` because it will only ever return 1 element.

## 0.9.3

_Released 07/06/2015_

**Features:**

- Proxied jQuery: `$` onto `cy` as `cy.$` and specific class methods: `Event`,
  `Deferred`, `ajax`, `get`, `getJSON`, `getScript`, `post`.
- Proxied `moment` onto `cy` as `cy.moment`.
- The URL will now automatically be restored when hovering over the Command Log
  to indicate the state of the URL at the time the command ran.
- [`.click()`](/api/commands/click) now accepts an optional: `position` argument
  (`center`, `topLeft`, `topRight`, `bottomLeft`, `bottomRight`). Center is
  still the default.
- [`.click()`](/api/commands/click) now accepts an optional `x` and `y`
  coordinate argument, which is relative to the top left corner of the element.
  Fixes [#50](https://github.com/cypress-io/cypress/issues/50).
- [Click docs have been updated](/api/commands/click) to reflect these changes.

**Bugfixes:**

- `onBeforeLoad` and `onLoad` callbacks to [`cy.visit()`](/api/commands/visit)
  are now invoked with `cy` as the context.
- Cypress logo now displays in `About Page`.

**Misc:**

- Internal refactoring to `Cypress.Mouse`.

## 0.9.2

_Released 07/04/2015_

**Features:**

- Added `About` page in desktop application annotating the current version.
- [`cy.fixture()`](/api/commands/fixture) now supports these additional
  extensions: `.html`, `.txt`, `.png`, `.jpg`, `.jpeg`, `.gif`, `.tif`, `.tiff`.
- Image fixtures will be sent back as a `base64` string.
- HTML fixtures will be prettified and saved back over the original.

**Misc:**

- Added more tests around various areas of the desktop application and ID
  generator.

## 0.9.1

_Released 07/03/2015_

**Features:**

- [`cy.viewport()`](/api/commands/viewport) can now accept an `orientation` when
  providing a `preset`. Valid orientations are `landscape` and `portrait`.

**Bugfixes:**

- The scaffolded `spec_helper.js` now correctly returns its object literal in
  the `onConsole` callback.
- [`.type()`](/api/commands/type) now correctly logs its message to the Command
  Log when provided options.
- [`.type()`](/api/commands/type) has been upgraded to handle situations where
  as it's typing, 3rd party code mutates the value either synchronously or
  asynchronously. The caret is automatically moved to the end position matching
  browser behavior.

**Misc:**

- Deprecated `Cypress.command`, instead use `Cypress.Log.command` to output a
  Command Log. Updated scaffolding on new projects to reflect this change.
- [`cy.contains()`](/api/commands/contains) now outputs much more explicit error
  messages when given command options. Fixes
  [#49](https://github.com/cypress-io/cypress/issues/49).
- `cy.route()` no longer validates `response` value when `{respond: false}` is
  passed in as options. Fixes
  [#48](https://github.com/cypress-io/cypress/issues/48).
- [`.invoke()`](/api/commands/invoke) and [`.its()`](/api/commands/its) will now
  log out the
  $el if it's a DOM object, which will now correctly highlight the
  $el during a
  command revert. Additionally if these commands have been called on a DOM
  object, their `onConsole` message will include the DOM objects.

## 0.9.0

_Released 07/02/2015_

**Summary:**

- [`cy.viewport()`](/api/commands/viewport) is a new command which will resize
  the viewport to a specified width and height. There is ow a default `viewport`
  size of `1000x660`.

**Features:**

- Your application's viewport dimensions will now automatically scale to fit
  regardless of your screen's size. This enables you to test resolutions larger
  than what your screen is capable of displaying. Additionally this fixes edge
  cases caused when there was a difference in viewports between users.
- The viewport's dimensions will now dynamically display accurately as they are
  changed in the header area.
- The viewport's scale will now dynamically display accurately as it is changed.
- Each command will automatically restore the viewport to the dimensions at the
  time the command was issued. In other words, scrolling over each command will
  restore exactly what Cypress "saw" when it issued the command.
- Several common viewport presets have been added for convenience

**Misc:**

- Cypress now requires a viewport to be issued at all times. By default it is
  `1000x660` but can be changed in your `cypress.json` file with he keys:
  `viewportWidth` and `viewportHeight`.

**Bugfixes:**

- Scrollbar styling is no longer hijacked by Cypress.

**Misc:**

- Updated remote application iframe styles.

## 0.8.1

_Released 06/30/2015_

**Bugfixes:**

- [`.select()`](/api/commands/select) will now fire a `focus` event on the
  `<select>` even if the window isn't in focus.
- [`.click()`](/api/commands/click) has been upgraded to be more intelligent
  about firing `focus` events, and now takes into account the previously focused
  element.
- [`.type()`](/api/commands/type) and [`.clear()`](/api/commands/clear) will not
  issue `change` events or `focus` events unnecessary when chaining together
  multiple actions which do not change the element or cause it to lose focus.
  Fixes [#47](https://github.com/cypress-io/cypress/issues/47).

## 0.8.0

_Released 06/26/2015_

**Summary:**

- [`.type()`](/api/commands/type) now implements all DOM events to simulate
  every aspect of typing on a real keyboard.
- All of the [type docs have been updated](/api/commands/type) to reflect these
  changes.

**Features:**

- [`.type()`](/api/commands/type) now outputs "Key Events Table" which is a
  `console.table` of every key typed, the `charCode`, all vents that fired, and
  whether any were `preventedDefault`.
- [`.type()`](/api/commands/type) now accepts the following special character
  sequences: `{selectall}`, `{del}`, `{backspace}`, `{esc}`, `{{}`, `{enter}`,
  `{leftarrow}`, `{rightarrow}`.
- [`.type()`](/api/commands/type) implements `cursor` and `selection` and
  `range` accurately like a real keyboard.
- [`.type()`](/api/commands/type) now fires change events exactly like real
  browsers when `{enter}` is used.
- [`.type()`](/api/commands/type) will fire `textInput` and `input` events
  exactly like a real browser. Fixes
  [#7](https://github.com/cypress-io/cypress/issues/7).
- [`.type()`](/api/commands/type) now follows all of the spec in regards to
  `preventingDefault` on any event that would insert a character such as
  `keydown`, `keypress`, `textInput`.
- [`.type()`](/api/commands/type) events should be `100%` identical to real
  browser `KeyboardEvents` including `charCode`, `which`, `keyCode`, `data`,
  etc.
- [`.type()`](/api/commands/type) now inserts a small delay `10ms` between each
  keystroke to simulate a real user typing.
- `input` events are now correctly fired when
  [`.select()`](/api/commands/select) chooses an `<option>`.
- `change` events are now fired exactly how a browser does (when an input loses
  focus and its value has changed since its last focus event). You'll see these
  fire after you use [`.blur()`](/api/commands/blur) directly, or use another
  `action command` on another element.

**Bugfixes:**

- Using [`.type()`](/api/commands/type) in an `input[type=number]` will no
  longer prepend the value. Fixes
  [#26](https://github.com/cypress-io/cypress/issues/26).
- `[contenteditable]` elements can now be focused and blurred.
- `aborting` during [`.click()`](/api/commands/click) /
  [`.dblclick()`](/api/commands/dblclick) now correctly cancels remaining queued
  click/dblclick events.

**Misc:**

- `console.groups` are now collapsed by default.
- [`.type()`](/api/commands/type) now validates the chars and will throw on
  anything other than a string or finite number.
- [`.type()`](/api/commands/type) now throws on empty strings.
- Removed several libs that used to handle typing simulation and rewrote typing
  from scratch.

## 0.7.6

_Released 06/23/2015_

**Bugfixes:**

- Prevent infinite loop due to a trifecta of rare circumstances with
  [`.click()`](/api/commands/click). Clicking will now retry sync after it
  attempts to scroll past the element covering up the desired clickable element.
  Fixes [#46](https://github.com/cypress-io/cypress/issues/46).

## 0.7.5

_Released 06/19/2015_

**Bugfixes:**

- [`.click()`](/api/commands/click) now takes into account being covered by a
  fixed positioned element and will increase the window's scroll offset to
  account for this. There are still more improvements to be made before this is
  bulletproof though.
- [`cy.contains()`](/api/commands/contains) could potentially resolve to a null
  subject if the matching content was split across multiple nested children
  elements. This has been fixed and contains will now return the first, deepest
  element which contains text potentially spread over multiple text nodes and/or
  children elements.

## 0.7.4

_Released 06/18/2015_

**Misc:**

- Attempting to [`.click()`](/api/commands/click) a select element will now
  throw an error. The error guides you to using the
  [`.select()`](/api/commands/select) command, as that is the command you should
  use to change a `<select>` value.
- `cy.route()` responses are now validated. If responses are `null` or
  `undefined` Cypress will throw a very specific error message.
- Cypress will now display `cypress.json` parse errors when attempting to boot a
  project when there is a syntax error in `cypress.json`.

## 0.7.3

_Released 06/17/2015_

**Features:**

- [`.select()`](/api/commands/select) will now output a command log.
- [`.select()`](/api/commands/select) will now have `click` / `focus` events
  fired on itself and the selected options (as per the pec).
- [`.select()`](/api/commands/select) is now inline with the other `Action`
  commands and will retry until the element naturally becomes selectable.

**Bugfixes:**

- `Action` command options are now properly formatted, instead of saying
  `Object{4}` they will display the overridden default options - ie: `force`,
  `timeout`, `interval`.
- Sending `{force: true}` to `Action` commands will no longer error out if the
  element is not visible. Forcing the action to take place now correctly removes
  all error checking prior to issuing the action and events.

**Misc:**

- Removed stack traces on `AssertionErrors` in the console since those come from
  `chai` and are basically useless.

## 0.7.2

_Released 06/17/2015_

**Bugfixes:**

- Removed factoring in the total time a test has been running when determining
  when its command timeout. This fixes a bug where commands down he chain would
  timeout earlier than their specified `{timeout: num}` option.

## 0.7.1

_Released 06/16/2015_

**Bugfixes:**

- DOM commands which can retry now correctly support `{timeout: num}` options
  which will raise the timeout beyond the standard `commandTimeout` rom
  `cypress.json`.
- `<script>`, `<img>`, `<video>` commands or any other element which supports
  `crossorigin` attribute now are proxied correctly. The `crossorigin` attribute
  removes sending cookies with the HTTP request and now there is a fallback to
  figure out the `remoteHost` even in this situation.

**Misc:**

- Support for redirects with status code `303`.

## 0.7.0

_Released 06/15/2015_

**Features:**

- Cypress now has first class support for `fixtures` (official docs coming
  soon).
- Introduced new [`cy.fixture()`](/api/commands/fixture) command.
- Fixtures support `json`, `js`, and `coffee` files with image support coming
  soon.
- Fixtures are automatically validated, with error messages propagating up to
  the client.
- Fixtures are automatically formatted / indented for easy debugging.
- Example fixture is automatically created with every project.
- Example support files are now automatically created with every project.
- `cy.route()` now accepts an **alias** as its response.
- `cy.route()` additionally accepts a special `fixture:` or `fx:` keyword which
  automatically loads the fixture as the response.

**Bugfixes:**

- Clicking giant yellow CypressError now displays associated XHR error in the
  console.

**Misc:**

- RegExp arguments are now properly formatted in the Command Log.
- Update `bluebird` to `2.9.27`.
- Update `glob` to `5.0.10`.

## 0.6.14

_Released 06/11/2015_

**Features:**

- Command logging has been upgraded to support "page events", which are
  different than commands. Now events which happen (XHR/page load/url
  change/spies/stubs/mocks) log out visually differently and do not use a
  command number. This should be easier to parse what was a real command and
  what was a page event.
- When the url changes this is now logged as a page event, and its `onConsole`
  logs what caused it to change.

**Misc:**

- Internal refactor / improvements to support long lived runnable objects to
  work with page events.
- Request Commands (now page events) have now been renamed to 'XHR'.
- [`cy.document()`](/api/commands/document) now returns the raw document object
  instead of a jQuery wrapped document object.
- When [`.its()`](/api/commands/its) or [`.invoke()`](/api/commands/invoke)
  fails it will include the current subject n the `onConsole` log.
- [`cy.wait()`](/api/commands/wait) now logs out when its referenced aliases,
  and its `onConsole` output displays the XHR return values.
- [`cy.hash()`](/api/commands/hash) and [`cy.url()`](/api/commands/url) no
  longer pass the return value as the command log's `message`, which made no
  sense and was unlike every other command.

## 0.6.13

_Released 06/09/2015_

**Bugfixes:**

- Traversal methods now correctly return their `$el` even when `{log: false}`
  option is passed.

**Misc:**

- [`.type()`](/api/commands/type) now works with `contenteditable` attributes.

## 0.6.12

_Released 06/09/2015_

**Bugfixes:**

- When Cypress detects a `page loading` event it will now clear out the subject
  so the next commands cannot reference previous page DOM elements.
- [`.check()`](/api/commands/check) and [`.uncheck()`](/api/commands/uncheck)
  will no longer output additional error'd commands when their associated
  `click` fails.

**Misc:**

- [`.type()`](/api/commands/type), [`.clear()`](/api/commands/clear),
  [`.check()`](/api/commands/check), [`.uncheck()`](/api/commands/uncheck) now
  all take `{force: true}` options to force the click to happen and skip
  additional clickable checks.
- Now when you click the giant yellow failure messages if the error is a
  `CypressError` instead of logging nothing it will now find the command
  associated to that error and display the same message as if you clicked the
  failed command.

## 0.6.11

_Released 06/08/2015_

**Bugfixes:**

- [`.clear()`](/api/commands/clear) and [`.type()`](/api/commands/type) no
  longer output additional error'd commands hen their associated `click` fails.
- Changed scrolling elements into view to use top strategy instead of bottom
  which fixes times where the middle of an element was not yet in he viewport.
  Fixes [#42](https://github.com/cypress-io/cypress/issues/42).

**Misc:**

- [`.submit()`](/api/commands/submit) now errors if it's been called on >1 form
  element. Fixes [#41](https://github.com/cypress-io/cypress/issues/41).
- Coordinates and hitboxes are now logged and displayed on
  [`.clear()`](/api/commands/clear) and [`.type()`](/api/commands/type).

## 0.6.10

_Released 06/06/2015_

**Bugfixes:**

- Improved clicking algorithm to reduce edge cases where element could not be
  clicked but should have been able to be clicked.

**Misc:**

- [`.click()`](/api/commands/click) accepts `{force: true}` which will force it
  to issue the click event and bypass checking to ensure element is physically
  clickable.
- Elements which are children of a container with `overflow` are automatically
  scrolled prior to a click (which is an abstraction around real user behavior).
- Elements that are covering up an element you targeted for
  [`.click()`](/api/commands/click) are now logged out in the command console.
- All elements are now logged out as real DOM elements instead of jQuery wrapped
  elements. This has several upsides. Chrome will allow you to immediately
  interact with these elements, drilling into their contents, displaying the
  element box model on hover, etc. This prevents you from having to expand the
  jQuery elements and click "Reveal in Elements Panel".

## 0.6.9

_Released 06/06/2015_

**Bugfixes:**

- Custom commands no longer error out if they are the very first `cy` command.

## 0.6.8

_Released 06/05/2015_

**Features:**

- [`cy.clearCookie()`](/api/commands/clearcookie) and
  [`cy.clearCookies()`](/api/commands/clearcookies) have been added as new
  commands.
- Cypress will automatically clear all cookies **before** each test run.
- Named the spec + app iframe so that inside of Chrome Dev Tools the iframe
  selector will clearly distinguish which iframe is your application versus
  Cypress.

**Bugfixes:**

- Hitbox is no longer covered up by element layers on DOM revert.
- Finally tracked down and fixed edge case causing empty view to display when
  tests were not empty. Fixes
  [#13](https://github.com/cypress-io/cypress/issues/13)

**Misc:**

- [`cy.visit()`](/api/commands/visit) now accepts `{log: false}` to prevent
  logging out (useful in custom commands).
- [`cy.contains()`](/api/commands/contains) is now scoped by default to the
  `<body>` instead of `document` which prevents it from returning elements in
  the `head` like `title`.

## 0.6.7

_Released 06/04/2015_

**Features:**

- When reverting the DOM, associated command elements are now automatically
  scrolled into view.
- Hitboxes are now displayed on the screen based on the actual coordinates where
  an `action command` event took place.
- Click events now display event information about the `mousedown` / `mouseup` /
  `click` default action + propagation in the command console.
- Preventing default action on `mousedown` will no longer give focus as per the
  spec.
- Click events are now issued in the exact center of an element (taking into
  account 2d transforms) and provide the coordinates in the command console and
  in the actual event
- Click events now take into account whether the associated element is being
  covered up by another element, and will retry or fail with an exact error
  message if the click was unable to be issued due to this reason.
- Click events will now intelligently provide `focus` to the first focusable
  element on the stack at the click coordinates, or will give `focus` to the
  window.
- Click events will issue the click to the topmost element based on the click
  coordinates and not necessarily to the element you requested to e clicked
  (which simulates exactly how a real click works). If this happens it is noted
  in the command console and provides the `Actual Element Clicked`.

**Bugfixes:**

- When hover over commands element layers (2d transforms like rotation) are now
  taken into account and displayed correctly.
- There was a bug when checking / unchecking `:checkbox` where it did not
  properly receive focus.

**Misc:**

- Click events are now replicated _almost_ identically to the W3C click spec.
  They should behave for all intents and purposes, identically to real clicks in
  the browser.

## 0.6.6

_Released 05/31/2015_

**Bugfixes:**

- Fixed regression related to [`cy.visit()`](/api/commands/visit) not
  re-visiting when current match matches remote url.

## 0.6.5

_Released 05/23/2015_

**Features:**

- When Cypress detects a regular HTTP page loading event (where we're leaving
  the current page and requesting a new one) it will now insert a `loading`
  command which indicates to the user Cypress has stopped running commands until
  the new page loads.
- If for some reason this new page errors Cypress will display the initial 500
  error messages just like [`cy.visit()`](/api/commands/visit).
- Cypress now waits `20s` (which matches [`cy.visit()`](/api/commands/visit))
  for the new page to load instead of `4s` previously.

**Bugfixes:**

- [`.submit()`](/api/commands/submit) will actually submit the form for real
  now, instead of just firing the submit event. Now it's been upgraded to be
  able to be canceled or have its returnValue set to false and will not submit
  the form. Don't ask how I missed this one. I as once a young naive programmer
  who trusted the DOM not to be the abomination it actually is.

**Misc:**

- No longer send back a 500 message when initial response status code is 4xx.

## 0.6.4

_Released 05/21/2015_

**Bugfixes:**

- Host header HTTPS protocol handling fixed.
- Incorrectly handling query params on redirects fixed.
- Other header edge cases fixed.

## 0.6.3

_Released 05/20/2015_

**Misc:**

- Cypress should work with self signed SSL certificates now.

## 0.6.2

_Released 05/20/2015_

**Bugfixes:**

- Using the `length` option in `querying` or `traversal` commands now logs out
  in the Command Log. Fixes
  [#40](https://github.com/cypress-io/cypress/issues/40).
- Other scenarios are fixed where command options would show incorrect number of
  object keys due to a bug in underscore's `reduce` with an object that has a
  `length` key. Fixes [#35](https://github.com/cypress-io/cypress/issues/35).

## 0.6.1

_Released 05/15/2015_

**Bugfixes:**

- Using the `length` option in traversal commands works properly now. Fixes
  [#38](https://github.com/cypress-io/cypress/issues/38).
- Command logging now works even if no `cy` commands have been issued. Fixes
  [#37](https://github.com/cypress-io/cypress/issues/37).

**Misc:**

- Removed cy proxy commands: `each`, `map`. These didn't really "fit" into the
  concept of a command, and with [`.invoke()`](/api/commands/invoke) or
  [`.its()`](/api/commands/its) they're accessible anyway, so nothing is really
  lost.

## 0.6.0

_Released 05/14/2015_

**Features:**

- Pushstate application routing now works 100% reliably with NO hacky overrides
  in all browsers.
- All incompatible `a` / `link` / `form` elements are transparently rewritten to
  be compatible including FQDN and protocol-less `href` / `src`.
- Cookies are automatically cleared between page refreshes, during app startup,
  and leaving the test page.
- 3rd Party cookies are now additionally cleared. All cookies are now accessible
  to the client in preparation for
  [`cy.clearCookies()`](/api/commands/clearcookies).
- Manual navigation after tests run now works reliably.
- Navigating between full page refreshes during tests now works reliably.

**Bugfixes:**

- Server-side redirects are now completely transparently handled and supported.
- URLs are no longer altered in any weird way.
- Problematic `headers` are now automatically stripped from remote responses.
- 3rd party `headers` are now properly proxied onto all responses.
- Custom headers and other headers "of interest" are rewritten for transparent
  compatibility.
- `gzip` compression now handled and proxied correctly.

**Misc:**

- Completely overhauled the URL and proxy system used to serve remote
  applications.
- Drastically simplified the architecture required for proxying.
- Improved reliability for displaying the remote url.
- Namespaced all cypress internal routes.
- Many internal development / debugging processes improved.
- Added 100+ new tests surrounding serving remote content and processing
  requests.
- Renamed all remaining old references to `eclectus`.
- All responses are now streamed using `content-encoding: chunked`.

## 0.5.15

_Released 05/07/2015_

**Bugfixes:**

- Reverted `window.location` overrides. This broke things in unexpected ways and
  after further testing would not have worked on `Firefox` and `IE`. It's back
  to the drawing board (but I have some ideas). Apps using `pushState` routing
  are broken again.

## 0.5.14

_Released 05/06/2015_

**Features:**

- Cypress now works with JS applications that use `pushState` and `replaceState`
  routing (commonly known as `HTML5 History`) without having to change any
  application code.
- Cypress now always updates the remote URL whenever your application changes
  its URL through the vast variety of ways it can do this.

**Bugfixes:**

- Removed `iframe` and `link[rel=stylesheet]` elements during DOM revert.
- Server instrument now correctly displays the number of responses their
  corresponding routes have had.
- Spies/Stubs/Mocks instrument now correctly displays the number of calls their
  corresponding methods have had.
- When users navigate between pages with commands, like
  [`.click()`](/api/commands/click), Cypress now correctly waits until the age
  has finished loading before running more commands. Previously this waited for
  the `unload` event, which did not fire synchronously, and ow we bind to
  `beforeunload` which does. Additionally Cypress checks to ensure
  `beforeunload` did not return a non-undefined value.

**Misc:**

- More changes to prepare for server adapters,

## 0.5.13

_Released 05/04/2015_

**Features:**

- New `cy.message` and `cy.msg` commands in preparation for `cypress-ruby`,
  `cypress-node`, `cypress-*` packages/gem to talk directly to your back end.

**Bugfixes:**

- Using `querying` or `traversal` commands will no longer throw a 2nd command
  error when using improper sizzle selectors.
- Argument formatting display for command messages is fixed. There were
  instances of leading commas, or no commas on some commands.

**Misc:**

- Changed default port from `3000` to `2020` to avoid standard port conflicts
  with commonly used back ends. Afterall, using Cypress is testing with 2020
  vision. ;-)
- Updated `bluebird` to `2.9.25`.
- Began implementation in preparation for **cross browser testing** coming
  sometime relatively soon.

## 0.5.12

_Released 04/30/2015_

**Features:**

- Introduced new **command option** `length` which cues Cypress into not
  resolving matched elements until their length matches the option provided.

**Bugfixes:**

- `cy.respond` will not resolve until all of the queue'd XHR's have resolved.

**Misc:**

- Cypress now throws on [`.should()`](/api/commands/should) if any DOM member
  isn't in the DOM, except for `exist` assertions.
- Cypress now throws on `eventually.have.length` assertions. Use implicit
  `{length: n}` command options instead.
- Cypress overrides chai `exist` assertion to really mean: "does this subject
  exist in the document?"

## 0.5.11

_Released 04/29/2015_

**Bugfixes:**

- Fixed missing `aliasType` from primitives and some DOM aliases, which prevent
  the background color from displaying in the UI.

**Misc:**

- Optimized performance for hovering / exiting commands. Heavily reduced the CPU
  on revert / restore the DOM.

## 0.5.10

_Released 04/28/2015_

**Features:**

- `cy.server()` now accepts a `delay` option which will delay all responses to
  requests (including 404) based on the value in ms
- `cy.server()` now accepts a `respond` option which can turn off automatic
  responding to requests.
- `cy.route()` now accepts a `delay` option which overrides the delay option set
  in `cy.server()` to just matched requests.
- `cy.route()` now accepts a `respond` option which will turn off automatic
  responding to just matched requests.
- Fixes [#14](https://github.com/cypress-io/cypress/issues/14).
- [`cy.wait()`](/api/commands/wait) now accepts an alias property called
  `request`. Example: `cy.wait('@getUsers.request')` which ill resolve once the
  XHR is initially requested, before it is responded to. This allows you to test
  things when a request is in flight.
- Added `cy.respond` command which will respond to all pending requests when
  `{respond: false}` is set in the `server` or `route`.
- [`.debug()`](/api/commands/debug) now displays pending requests and completed
  requests.
- The command UI now displays pending requests as a `pending command`.

**Misc:**

- Updated `sinon` to `1.14.1`.

## 0.5.9

_Released 04/26/2015_

**Features:**

- Added [`.spread()`](/api/commands/spread) method which spreads an array as
  individual arguments to a callback function,like
  [`.then()`](/api/commands/then).
- During an update Cypress will now display the updating message in the same
  coordinates as when the app was open by clicking the tray icon.
- After an update Cypress will now open back up and show itself in these same
  coordinates.
- [`cy.wait()`](/api/commands/wait) can now accept an array of route aliases
  which will wait until all have completed. This array of resolved XHRs will
  become the next subject.
- Each time an alias in used with a [`cy.wait()`](/api/commands/wait), Cypress
  will not resolve until the Nth request matching the outing alias responds.
  Fixes [#4](https://github.com/cypress-io/cypress/issues/4).
- [`cy.get()`](/api/commands/get) has been upgraded to accept a routing alias.
  By default it will yield the last matched request, but also supports special
  alias properties which return a different request or potentially an array of
  requests.

## 0.5.8

_Released 04/24/2015_

**Features:**

- [`.as()`](/api/commands/as) can now alias primitives and objects other than
  routes or DOM.
- [`.as()`](/api/commands/as) automatically assigns this alias to `runnable.ctx`
  which makes it available synchronously.
- [`.as()`](/api/commands/as) does not allow several reserved words and will
  throw if you attempt to alias as one of them.
- [`cy.get()`](/api/commands/get) can now accept all alias types and will
  display the labels in the UI differently based on the alias type.
- Cypress now displays a message when the Desktop App update is actually being
  applied instead of doing nothing and looking like it's crashed.

**Bugfixes:**

- [`.as()`](/api/commands/as) now throws on empty strings or non string
  arguments.
- Desktop App debug logs no longer sort in the wrong direction.
- Permissions are now restored during a cypress update for the `logs` and
  `cache`.
- Prevent 3rd party windows from gaining focus over main window.

**Misc:**

- Removed `cy.assign`, this has been folded into [`.as()`](/api/commands/as).
- Updated `chokidar` to `1.0.1`.

## 0.5.7

_Released 04/23/2015_

**Features:**

- The insanity that is URL parsing to figure out absolute, relative,
  absolute-path-relative, http, sub domains, and local files should work in most
  cases. In other words, Cypress has implemented the vast majority of url
  parsing based on the [w3c URL spec](https://url.spec.whatwg.org).

**Bugfixes:**

- Prevent reverting the DOM while tests are running. Fixes
  [#28](https://github.com/cypress-io/cypress/issues/28).
- Fix edge case with forced focusing / blurring an element when document is not
  in focus and the element is no longer in the DOM.
- Visiting relative paths which are served from your file system works again.
- Visiting absolute paths in the iframe now displays the correct URL in the
  address bar again.

## 0.5.6

_Released 04/22/2015_

**Features:**

- Cypress now detects the difference between a forced async `done` test timeout
  vs a regular command timeout, and will throw the appropriate message
  indicating whether the user forgot to invoke `done` or whether the timeout
  happened due to a command.

**Bugfixes:**

- [`cy.visit()`](/api/commands/visit) now properly times out when the `load`
  event does not occur within the time out window.
- If a page loads after a [`cy.visit()`](/api/commands/visit) times out it will
  no longer cause an exception in the `onBeforeLoad` handler.

**Misc:**

- Increased [`cy.visit()`](/api/commands/visit) timeout from **15s** to **20s**.
- [`cy.visit()`](/api/commands/visit) now throws a custom error message when it
  times out (instead of an incorrect / confusing default Mocha timeout message).
- Using a `debugger` while running a test will no longer always cause the test
  to time out (yay!).
- Override default Mocha timeout handling, replaced with custom logic. Removes
  many bizarre edge cases.

## 0.5.5

_Released 04/20/2015_

**Features:**

- When main app window comes into focus, it will automatically focus other
  peripheral windows.
- Added explicit error message when using child commands on a subject which has
  been detached or removed from the DOM.
- Cypress now detects when an async test is passed and not all commands have
  finished running. It will throw an explicit error message in this situation.

**Misc:**

- Error messages no longer break within words.

## 0.5.4

_Released 04/20/2015_

**Features:**

- Enhanced [`.should()`](/api/commands/should) to accept `eventually` flag to
  automatically retry assertions until timeout is reached.

**Misc:**

- Repurposed [`.and()`](/api/commands/and) to be an alias of
  [`.should()`](/api/commands/should) for chainability.
- Removed `cy.to`.

## 0.5.3

_Released 04/19/2015_

**Bugfixes:**

- Handle relative path segments which walk up past the remote host
  `../../assets/app.css`.
- Throw explicit error for `null`, `undefined`, and `""` arguments to
  [`cy.contains()`](/api/commands/contains). Fixes
  [#24](https://github.com/cypress-io/cypress/issues/24).

Misc

- Improved `onConsole` message for [`cy.focused()`](/api/commands/focused) when
  no element was returned. Fixes
  [#23](https://github.com/cypress-io/cypress/issues/23).

## 0.5.2

_Released 04/17/2015_

**Bugfixes:**

- Fixed missing files from deployment. Added tests around this.

## 0.5.1

_Released 04/16/2015_

**Misc:**

- Updated dependencies: `bluebird`, `fs-extra`, `sinon-as-promised`.
- Updated `nw` to `0.12.1`.

## 0.5.0

_Released 04/15/2015_

**Misc:**

- Snapshot source code.

## 0.4.7

_Released 04/15/2015_

**Misc:**

- Added automated functional NW tests during deployment in preparation for
  `0.5.0` release.

## 0.4.6

_Released 04/11/2015_

**Features:**

- Added "invisible" icon to a command when its matched element(s) are invisible.
- Running a single test will now automatically expand to display its commands.
- Any failing test will now automatically expand to display its commands.
- Failing tests which become passing will automatically collapse again.

## 0.4.5

_Released 04/10/2015_

**Features:**

- Added [`cy.wrap()`](/api/commands/wrap) command.

**Bugfixes:**

- Improved options logging and argument logging for all commands. Fixes
  [#8](https://github.com/cypress-io/cypress/issues/8).

## 0.4.4

_Released 04/09/2015_

**Features:**

- Added [`.not()`](/api/commands/not) traversal filtering method. Suggested in
  [#16](https://github.com/cypress-io/cypress/issues/16).

**Misc:**

- Improved error messages for traversal failures. Errors now include the parent
  context DOM element. Fixes
  [#11](https://github.com/cypress-io/cypress/issues/11).
- Improved error messages for invalid `cy.route()` arguments. Fixes
  [#20](https://github.com/cypress-io/cypress/issues/20).

## 0.4.3

_Released 04/09/2015_

**Features:**

- Added functionality which enables `cy.server()` and `cy.route()` to be created
  prior to [`cy.visit()`](/api/commands/visit). The server and routes will apply
  to the next page which is visited. This allows you to stub requests which
  happen on page load. Suggested in
  [#17](https://github.com/cypress-io/cypress/issues/17).
- [`cy.visit()`](/api/commands/visit) now takes an optional `onBeforeLoad`
  callback option which is invoked when your page begins to ender but prior to
  its load event.

**Misc:**

- Improved error message when attempting to use `cy.agents` or anything else
  which requires a remote sandbox. Fixes
  [#12](https://github.com/cypress-io/cypress/issues/12).

## 0.4.2

_Released 04/09/2015_

**Bugfixes:**

- Remove accidental `debugger` left in `uncaught` overloads (used only in Dev).
- Prevent memory leak with Cypress helper listeners on every re-run of the
  tests.
- Prevent memory leak with custom 3rd party Cypress listeners in spec windows on
  every re-run of the tests.
- Prevent error from being thrown when `.only`'s are switched in between active
  test runs.

## 0.4.1

_Released 04/08/2015_

**Features:**

- `javascripts` files can now utilize `snockets`, `browserify`, or `requirejs`.

**Bugfixes:**

- Handle `javascripts` and preprocess them as we do regular specs. Fixes:
  [#15](https://github.com/cypress-io/cypress/issues/15).
- Fixed an edge case when writing a test with a `done` callback alongside `cy`
  commands. This situation would always cause a timeout after 30 seconds even
  though the test would pass.

**Misc:**

- Internally refactored Cypress for easier testability / debuggability.
- Organized files around in preparation for OS release.
- Added lightweight module system / optimized Cypress listeners to prevent
  duplicated events.
- Changed url strategy for sending down `spec` files.

## 0.4.0

_Released 04/02/2015_

**Features:**

- `sinon-as-promised` is now a bundled extension.
- tests without an `id` now run (with a random temporarily assigned id).
- tests with a duplicate `id` to another test will now run (with a random
  temporarily assigned id).
- tests or suites which are manually re-run from the UI now hide all of the
  other tests / suites.

**Bugfixes:**

- Fixed hook failure associated to wrong failed current test when `grep` was
  set.
- Async tests which used a `cy` command and had a `done` callback was always
  undefined. Now it's back to real Mocha `function done(err)`.
- Fixed bug in Mocha where it incorrectly associates `hook.ctx.currentTest` to
  the wrong `test`. [Mocha Issue](https://github.com/mochajs/mocha/issues/1638).
- [`cy.title()`](/api/commands/title) no longer logs twice on a failure.
- Fixed putting an `.only` on a large list of tests that would sometimes not
  clear the previous runnables in the UI.

**Misc:**

- Optimized first test run after hard refresh.
- Performance improvements on successive runnable iterations.
- Aborting currently running tests performance improvement.
- Live reload performance improvements when tests are changed.
- Added 100+ tests covering Runner + Reporter behavior.
- Aggressively cleaned up listeners after each test completion + run.
- Added additional `Cypress` events for 3rd party custom handling.

## 0.3.15

_Released 03/28/2015_

**Misc:**

- Drastically improved file watching on large projects with many tests. Instead
  of choking the CPU at nearly 100% indefinitely we now optimally watch the
  current working files for changes.

## 0.3.14

_Released 03/27/2015_

**Bugfixes:**

- `Socket.io` and `chokidar` are now being cleaned up when a project is closed.
  Previously `chokidar` file watchers would stick around indefinitely causing a
  memory leak each time any project is closed and reopened.

## 0.3.13

_Released 03/27/2015_

**Features:**

- [`cy.visit()`](/api/commands/visit) now detects a local url. `localhost`,
  `0.0.0.0`, `127.0.0.1` can omit the `http://` protocol.

**Bugfixes:**

- [`cy.contains()`](/api/commands/contains) now properly escape quotes in the
  text.
- [`cy.visit()`](/api/commands/visit) now inserts a trailing slash intelligently
  into the correct `path` position (not after query params or hashes).
- [`cy.visit()`](/api/commands/visit) will no longer log 2 failed commands on
  error.
- Hovering on commands which delay resolving their $el will now properly
  highlight again.

**Misc:**

- [`.debug()`](/api/commands/debug) returns the current subject now.
- upgraded jsUri to `1.3.0`.
- [`cy.visit()`](/api/commands/visit) now throws when url argument isn't a
  string.
- `Cypress.Log` instances now fire `attrs:changed` event. Removed `state:change`
  event.

## 0.3.12

_Released 03/26/2015_

**Bugfixes:**

- Aliases which replay their commands will no longer break the current chain and
  therefore not unintentionally null our their subject for the ext command.
- Highlighting $el's on DOM restore now works again.
- Asserting against [`cy.focused()`](/api/commands/focused) will indent command
  logs now.
- Prevent failed [`.should()`](/api/commands/should) and `cy.to` from outputting
  a second error'd command log.
- Removed memory leaks surrounding Mocha runner.
- Captured remote page uncaught errors again which fail corresponding tests.
- Captured spec iframe errors again and preserve their stack trace.

**Misc:**

- [`cy.focused()`](/api/commands/focused) is now a parent command.
- Memory usage improvements.

## 0.3.11

_Released 03/25/2015_

**Bugfixes:**

- Automatic command errors now properly show as errored commands.
- [`.invoke()`](/api/commands/invoke) now correctly checks for a subject before
  running.

**Misc:**

- `cy.Promise` (Bluebird) is now publicly available.

## 0.3.10

_Released 03/24/2015_

**Bugfixes:**

- Test duration is now correct and only updates when tests finish.
- Failing a hook will no longer continue to count the duration forever.

**Misc:**

- Bumped Mocha to `2.2.1`
- Users now see a specialized error message when Cypress could not serve static
  files from the file system.

## 0.3.9

_Released 03/24/2015_

**Features:**

- Instead of waiting until commands resolve, commands are immediately inserted
  with a `pending` status.
- Pending commands are now visually distinguishable.
- Created new `Cypress.Log` interface for greater control over the display of
  commands.
- Available aliases are now logged in the console on
  [`.debug()`](/api/commands/debug).

**Bugfixes:**

- Allow projects to be scrolled when >4 are added.
- [`.type()`](/api/commands/type) accepts remaining `input[type=*]` that users
  can type into.
- Cause + Effect commands are now logged in the correct order. IE, clicking
  something which causes another command to insert will be inserted correctly in
  the order they arrived
- `numRetries` is no longer shown in commands.
- [`.clear()`](/api/commands/clear) now logs a command.
- `Promise.reduce` bugs are now fixed, causing events on a collection of
  elements in the synchronous wrong order.
- `cy.chain` is now coercively returned instead of `cy` which prevents losing
  access to the subject in custom commands.
- Trailing slashes are removed when serving initial files from the file system
  directly.

## 0.3.8

_Released 03/22/2015_

**Features:**

- Added icons + tray icons.

**Bugfixes:**

- Prevent cypress.app from showing in taskbar.
- Clicking on tray twice will toggle hide/show of app.

## 0.3.7

_Released 03/21/2015_

**Features:**

- Code Signed Mac App to prevent "Unidentified Developer" message on open.

## 0.3.6

_Released 03/20/2015_

**Features:**

- Added external link to changelog when checking for updates :-)

**Bugfixes:**

- Force trailing slash on all [`cy.visit()`](/api/commands/visit) to fix
  relative links `href="assets/app.js"`.
- Fix sourceMappingURL browser bug `http:/localhost:4200/app.css.map`.
- Fix test titles not being escaped due to refactoring.

## 0.3.5

_Released 03/20/2015_

**Bugfixes:**

- Fix missing `moment.js` from `bower.json`.
- Fix missing trailing slash from initial [`cy.visit()`](/api/commands/visit)
  requests.
- Fix missing `__initial=true` query param on initial redirects.

**Misc:**

- Updated $.simulate to `1.0.1`.

## 0.3.4

_Released 03/19/2015_

**Features:**

- [`.type()`](/api/commands/type) now causes the subject to receive `focus`
  event.
- [`.type()`](/api/commands/type) now causes previously `focused` elements to
  receive `blur` event/
- Typing `{enter}` now handles form submit logic as per the HTML spec.
  - Form with 1 input, no defaultButton.
  - Form with 2 inputs, no defaultButton.
  - Form with disabled defaultButton.
  - Form with multiple defaultButtons.
  - Correctly processes defaultButton click event, form submit event.
  - Intelligently handle defaultPrevented events from descendants.

**Bugfixes:**

- [`.clear()`](/api/commands/clear) now returns a promise.

**Misc:**

- Updated `bluebird` to `2.9.14`.

## 0.3.3

_Released 03/18/2015_

**Features:**

- Filtered out Ajax requests for `.js`, `.html`, `.css` files by default.
- `cy.server()` can configure whether this is turned on or off.

**Bugfixes:**

- Prevent `cy.server()` from slurping up Angular async template GETs.

**Misc:**

- Inlined Google Fonts into `vendor.css`.
